用Cad畫二次拋物線
Cad畫二次拋物線如y=ax2+bx+c“visual第一步 確認cad中有VBAmodule如果沒有請下載,即CAD中“工具”-“宏basic 編輯器”,點 thisdrawing第二步 打開cad alt+F11打開VBA窗口 添加模塊復制以下Sub pwx()定義幾個點Dim pntO(2) As DoubleDim pntA(2) As DoubleDim pntB(2) As DoubleDim pntC(2) As DoubleDim pntD(2) As DoubleDim pntE(2) As Double 設拋物線方程為:y=ax今bx+cDim a As DoubleDim b As DoubleDim c As Double設拋物線的寬度為lDim l As DoubleDim p As DoubleDim Co As Acad3DSolidDim Se AsAcadRegionDim Pa As Acad3DFaceDim PntAsAcadPointDim Sp() As AcadObject a = InputBox(" 請輸入y=a*x*x+b*x+c 中對應的a:"," 拋物線方程參數(shù)")If a = 0 Then MsgBox "a=0,不是拋物線":End拋物線方程參數(shù)")拋物線方程參數(shù)")b = InputBox(" 請輸入 y=a*x*x+b*x+c 中對應的 b:"," c = InputBox(" 請輸入 y=a*x*x+b*x+c 中對應的 c:","l = InputBox("請輸入所要畫的拋物線寬度l:","拋物線寬度")l = l / 2 計算x2=2py中的pp = 1 / Abs(a)定義。點pntO(0) = 0pntO(1) = 0pntO(2) = 0 定義 A 點 pntA(0) = 0精品資料pntA=0pntA(2) = l * Sqr(3) / 2畫圓錐Set Co = ThisDrawing.ModelSpace.AddCone(pntO, l, l * Sqr(3)移動圓錐,使底部圓在 xy平面上Co.MovepntO, pntAIf l > p / 2 Then定義 A 點 pntA(0) = 0pntA(1) = p / 2pntA(2) = (l - p / 2) * Sqr(3)定義B點pntB(0) = 0pntB(1) = -l + ppntB(2) = 0定義C點pntC(0) = 1pntC(1) = -l + ppntC(2) = 0畫剝面線Set Se = Co.SectionSolid(pntA, pntB, pntC)剝面線旋轉到xy平面Se.Rotate3D pntB, pntC, -60 * 4 * Atn(1) / 180定義D點pntD(0) = 0pntD(1) = -lpntD(2) = 0定義E點pntE(0) = 1pntE(1) = 0pntE(2) = 0移動剝面線,使頂點在(0,0,0)位置Se.MovepntO, pntD當a>0時,翻轉曲線If a > 0 Then Se.Rotate3D pntO, pntE, 180 * 4 * Atn(1) / 180重新設巳嵐pntE(0) = -b / (2 * a)pntE(1) = (4 * a * c - b A 2) / (4 * a)pntE(2) = 0移拋物線Se.MovepntO, pntE炸開剝面線Sp = Se.Explode刪除輔助內(nèi)容Co.DeleteSe.DeleteSp(1).DeleteElseMsgBox "輸入的l太小,不適合剝圓錐"End IfEnd Sub第三步菜單欄里點擊運行命令輸入?yún)?shù)a b c以及拋物線寬度即可得到CADf口 Excel VBA高手請進 批量獲取坐標點數(shù)據(jù)一次出差到一個項目工地去,看到他們對著電腦上設計單位給的CAD圖在一個點一個點的的找坐標值.方法是用鼠標點上一個點,記下(X,Y)后再輸?shù)紼XCEL中,怕一個人出錯,得兩個人 來操作.后來有人發(fā)現(xiàn)了一個好辦法,說不用筆來記(X,Y) 了,直接用復制和粘貼的辦法來做這確實是一大進步呀.我問他們這一晚上能找多少點呀,回答說做不了多少還老出錯.我說這樣吧我給你編一個小程序用吧.一晚過后第二天他們拿程序一用都說真是省大勁了,又準又快呀.在CAD43選 工具-宏-visual basic 編輯器,點thisdrawing把下面的程序寫進去,然后點運行即可.Attribute VB_Name ="模塊 1"Sub abc() Dim x, y As Double Dim ReturnPoint As Variant Dim i As Integer Dim high As Single Dim Ptext, Fname As String Dim textObj As AcadText Dim pointObj As AcadPoint Dim layerObj As AcadLayer x = 0: y = 0: i = 1: high = 9 Fname = InputBox("選取結束時,請回到第一點!請給出文件名。")If Fname = "" Then Fname = "PointsDate"Fname = "c:abc" & Fname & ".txt"Set layerObj = ThisDrawing.Layers.Add("PointsData")ReturnPoint = ThisDrawing.Utility.GetPointPtext = i & ":(" & Round(ReturnPoint(0), 2) & "," & Round(ReturnPoint(1), 2) & ")Set textObj = ThisDrawing.ModelSpace.AddText(Ptext, ReturnPoint, high)Set pointObj = ThisDrawing.ModelSpace.AddPoint(ReturnPoint)pointObj.Layer = "PointsData"textObj.Layer = "PointsData"pointObj.color = acRedOpen Fname For Output As #1 "c:PointsDATA.txt"Print #1, "No", "y", "x"Print #1, i; Round(ReturnPoint,2), Round(ReturnPoint(0), 2)Welcome ToDownload !歡迎您的下載,資料僅供參考!