vb.net擬合多段線 多段線如何擬合

誰能提供一段vb在CAD中繪制多段線的實(shí)例代碼作參考!

多線段沒畫過,

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站建設(shè)、做網(wǎng)站、駐馬店網(wǎng)絡(luò)推廣、微信小程序開發(fā)、駐馬店網(wǎng)絡(luò)營銷、駐馬店企業(yè)策劃、駐馬店品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供駐馬店建站搭建服務(wù),24小時服務(wù)熱線:18980820575,官方網(wǎng)址:muchs.cn

線倒是畫過,二話不說直接上代碼你參考一下

繪制邊框

Private Sub Command4_Click()

Set acadDoc = acadApp.ActiveDocument

link2

acadDoc.ActiveLayer = acadlay(0)

With adoRes

While Not .EOF

pt1(0) = !X: pt1(1) = !Y: pt1(2) = !z: pt2(0) = !X1: pt2(1) = !Y1: pt2(2) = !z1

draw pt1, pt2

.MoveNext

Wend

End With

pt1(0) = 0: pt1(1) = 0: pt1(2) = 0

pt2(0) = 20: pt2(1) = 10: pt2(2) = 0

draw pt1, pt2

'在坡

pt1(0) = 0: pt1(1) = 0: pt1(2) = 0

pt2(0) = 20: pt2(1) = 10: pt2(2) = 0

draw pt1, pt2

For c = 0 To 50 Step 10

pt1(0) = 0: pt1(1) = c: pt1(2) = 0

pt2(0) = 270: pt2(1) = c: pt2(2) = 0

draw pt1, pt2

Next c

pt1(0) = 20: pt1(1) = 0: pt1(2) = 0

pt2(0) = 20: pt2(1) = 190: pt2(2) = 0

draw pt1, pt2

pt1(0) = 0: pt1(1) = 0: pt1(2) = 0

pt2(0) = 0: pt2(1) = -10: pt2(2) = 0

draw pt1, pt2

pt1(0) = 0: pt1(1) = -10: pt1(2) = 0

pt2(0) = 270: pt2(1) = -10: pt2(2) = 0

draw pt1, pt2

pt1(0) = 270: pt1(1) = -10: pt1(2) = 0

pt2(0) = 270: pt2(1) = 0: pt2(2) = 0

draw pt1, pt2

pt3(0) = 5: pt3(1) = -7

acadDoc.ModelSpace.AddText t, pt3, 4

pt3(0) = 55: pt3(1) = -7

acadDoc.ModelSpace.AddText t1, pt3, 4

a = 0

For c = 60 To 100 Step 10

pt1(0) = 20: pt1(1) = c: pt1(2) = 0

pt2(0) = 23: pt2(1) = c: pt2(2) = 0

draw pt1, pt2

pt1(0) = 10: pt1(1) = c - 1.6: pt1(2) = 0

acadDoc.ModelSpace.AddText a, pt1, 3.2

a = a + 2

Next c

'在圖中加入地面高程

acadDoc.ActiveTextStyle = acadDoc.TextStyles.Add("楷體")

pt1(0) = 1: pt1(1) = 13: pt1(2) = 0

Set acadtext = acadDoc.ModelSpace.AddText("地面高程", pt1, 3.2)

Call rote1(acadtext, pt1)

'在圖中加入設(shè)計(jì)高程

Call rote1(acadtext, pt1)

pt1(0) = 1: pt1(1) = 23: pt1(2) = 0

Set acadtext = acadDoc.ModelSpace.AddText("設(shè)計(jì)高程", pt1, 3.2)

Call rote1(acadtext, pt1)

'在圖中加入填挖高

pt1(0) = 1: pt1(1) = 33: pt1(2) = 0

Set acadtext = acadDoc.ModelSpace.AddText("填 挖 高", pt1, 3.2)

Call rote1(acadtext, pt1)

'在圖中加入坡度/坡長

pt1(0) = 0: pt1(1) = 5.5: pt1(2) = 0

Set acadtext = acadDoc.ModelSpace.AddText("坡 度", pt1, 3.2)

Call rote1(acadtext, pt1)

pt1(0) = 9: pt1(1) = 1: pt1(2) = 0

Set acadtext = acadDoc.ModelSpace.AddText("坡 長", pt1, 3.2)

Call rote1(acadtext, pt1)

'在圖中加入樁號

pt1(0) = 1: pt1(1) = 43: pt1(2) = 0

Set acadtext = acadDoc.ModelSpace.AddText("樁 號", pt1, 3.2)

Call rote1(acadtext, pt1)

Call Command5_Click

End Sub

Private Sub draw(pt1, pt2)

Set AcadLine = acadDoc.ModelSpace.AddLine(pt1, pt2)

acadDoc.Regen acActiveViewport

End Sub

線倒是畫過,二話不說直接上代碼你參考一下

vb曲線擬合

老弟,公式打不出來的

一般都是用matlab搞定的,它里面有現(xiàn)成的函數(shù)供使用的

典型程序解析:

x=[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1];%input xi data

y=[1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2]; % input yi data

n=2; % polynomial order

p=polyfit(x, y, n)% polyfit 的輸出是一個多項(xiàng)式系數(shù)的行向量(擬合二項(xiàng)式的系數(shù))

ezplot('-9.8108*x*x+20.1293*x-0.0317')%對擬合的函數(shù)作圖

xi=linspace(0,1,100); % x-axis data for plotting

z=polyval(p, xi);% 為了計(jì)算在xi數(shù)據(jù)點(diǎn)的多項(xiàng)式值,調(diào)用MATLAB的函數(shù)polyval

plot(x,y, 'o' ,x,y,xi,z,':')%在同一個圖形里看他們的擬合程度

典型例題:對以下數(shù)據(jù)分別作二次,三次多項(xiàng)式擬合,并畫出圖形.

x=1:16;

y=[4, 6.4, 8, 8.4, 9.28, 9.5, 9.7, 9.86, 10, 10.2, 10.32, 10.42, 10.5, 10.55, 10.58, 10.6];

源程序:二次多項(xiàng)式擬合

x=1:1:16;

y=[4, 6.4, 8, 8.4, 9.28, 9.5, 9.7, 9.86, 10, 10.2, 10.32, 10.42, 10.5, 10.55, 10.58, 10.6];

a=polyfit(x,y,2)

a =

-0.0445 1.0711 4.3252

ezplot('-0.0445*x^2+1.0711*x+4.3252')

三次多項(xiàng)式擬合

x=1:1:16;

y=[4, 6.4, 8, 8.4, 9.28, 9.5, 9.7, 9.86, 10, 10.2, 10.32, 10.42, 10.5, 10.55, 10.58, 10.6];

a=polyfit(x,y,3)

a =

0.0060 -0.1963 2.1346 2.5952

ezplot('0.0060*x^3-0.1963*x^2+2.1346*x+2.5952')

VB.NET 簡單多線程

多線程一般是不推薦用的,因?yàn)榫€程之間如果有共享資源的話會引起競爭,需要加鎖處理;而且線程間沒有時序關(guān)系,所以你在調(diào)試中可能會出現(xiàn)異步處理結(jié)束順序與開始處理順序不一致的情況(我在調(diào)試中已經(jīng)發(fā)現(xiàn)該問題)。

針對你提出的這個問題,采用了多線程處理,利用的是BackgroundWorker也就是異步處理控件進(jìn)行了處理。

代碼已經(jīng)經(jīng)過調(diào)試通過。歡迎交流,如有問題,留下QQ或其他聯(lián)系方式。

代碼如下,并附程序截圖。

‘---------------------------------------------------

Imports?System.ComponentModel?'導(dǎo)入異步控件命名空間

Public?Class?Form1

Private?howmany?As?Integer?=?10

Private?AnalysisNumber(0?To?howmany?-?1)?As?BackgroundWorker

Private?Sub?Button1_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?Button1.Click

ListBox1.Items.Clear()

creatNewBackgroundWorker()

addHandle()

startWork()

End?Sub

Private?Sub?creatNewBackgroundWorker()

For?i?As?Integer?=?0?To?AnalysisNumber.Length?-?1

AnalysisNumber(i)?=?New?BackgroundWorker

Next

End?Sub

Private?Sub?addHandle()

For?i?As?Integer?=?0?To?AnalysisNumber.Length?-?1

AddHandler?AnalysisNumber(i).DoWork,?AddressOf?AnalysisNumber_DoWork

AddHandler?AnalysisNumber(i).RunWorkerCompleted,?AddressOf?AnalysisNumber_RunWorkerCompleted

Next

End?Sub

Private?Sub?startWork()

For?i?As?Integer?=?0?To?9

Dim?temp(0?To?9)?As?Integer

For?j?As?Integer?=?1?To?10

temp(j?-?1)?=?10?*?i?+?j

Next

AnalysisNumber(i).RunWorkerAsync(temp)

Next

End?Sub

Private?Sub?AnalysisNumber_DoWork(ByVal?sender?As?Object,?ByVal?e?As?System.ComponentModel.DoWorkEventArgs)

Dim?data?As?Integer()

data?=?CType(e.Argument,?Integer())

Dim?temp?As?Integer

For?i?As?Integer?=?0?To?data.Length?-?1

temp?=?data(i)

data(i)?=?temp?*?temp

Next

e.Result?=?data

End?Sub

Private?Sub?AnalysisNumber_RunWorkerCompleted(ByVal?sender?As?Object,?ByVal?e?As?System.ComponentModel.RunWorkerCompletedEventArgs)

Dim?data?As?Integer()

data?=?CType(e.Result,?Integer())

For?i?As?Integer?=?0?To?data.Length?-?1

ListBox1.Items.Add(data(i))

Next

End?Sub

End?Class

網(wǎng)頁標(biāo)題:vb.net擬合多段線 多段線如何擬合
網(wǎng)站路徑:http://muchs.cn/article14/doedsge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT電子商務(wù)、云服務(wù)器、網(wǎng)站策劃、網(wǎng)站建設(shè)、微信公眾號

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站