導航:首頁 > 凈水問答 > vba過濾多段線

vba過濾多段線

發布時間:2021-01-10 20:03:27

A. vba filter函數怎麼用

filter英文意思是過濾器。顧名思義,這個函數大致功能就是過濾篩選,它是一個針對於數組的函數。有4個參數,分別是:sourcearray(待篩選數組),match(要查找的字元串),include(布爾值,是否包含匹配項),compare(字元查找對比方式)。下面用一個例子說明用法:

Subtest()
DimarrAsVariant,brrAsVariant,crrAsVariant
arr=Array(2,1,2,4,3,2)
brr=Filter(arr,2,False)
crr=Filter(arr,2,True)
MsgBox"過濾掉匹配項,保留其餘項:"&vbCrLf&Join(brr,"_")
MsgBox"過濾掉不匹配項,保留匹配項目:"&vbCrLf&Join(crr,"_")
EndSub
'執行結果分別是:
'過濾掉匹配項,保留其餘項:
'1_4_3
'過濾掉不匹配項,保留匹配項目:
'2_2_2

從上面的例子brr數組是從arr數組中過濾掉了2,保留其他非匹配項目組成的一個新數組,crr是從arr中去掉了非匹配項,保留了是2的項組成的新數組。所以filter第三個參數是關鍵,如果是false就不保留匹配向,是true就只保留匹配項,我們一般用的是像brr那種,crr這種現實中沒什麼意義,只是用ubound(crr)-lbound(crr)+1>0 這種來確定某個字元在某個數組中是否存在!

B. 用excel vba代碼提取CAD多段線坐標到excel裡面

我有提取CAD多段線坐標到Excel裡面的軟體,可以批量提取

C. 我想通過這段CAD VBA代碼實現提取"JMD"圖層中所有閉合二位多段線的面積統計,但是不知道哪兒錯了

Public Sub create_sset_PL()
' 創建新的選擇集
Dim sset As AcadSelectionSet
Dim FilterType() As Integer, FilterData() As Variant
ReDim gpCode(2) As Integer
ReDim dataValue(2) As Variant

Set sset = ThisDrawing.SelectionSets.Add("ssl")
'創建過濾器
'本例為過濾圖層為「JMD」的閉合多段線
'使用的是變體數組進行定義

'多段線過濾器
gpCode(0) = 0
dataValue(0) = "LWPolyline"

gpCode(2) = 70
dataValue(2) = 1
'圖層過濾器
gpCode(1) = 8
dataValue(1) = "JMD"

FilterType = gpCode
FilterData = dataValue

' 添加至選擇集中,在選擇過程中進行過濾
' 完成選擇後按回車。
sset.Select acSelectionSetAll, , , FilterType, FilterData

' 在選擇集中循環並將每一已合條件的對象面積統計輸出。

Dim sum As Double
Dim i As Integer
Dim s As Variant
Dim PlineObj As AcadLWPolyline
sum = 0
For Each PlineObj In sset
sum = sum + PlineObj.Area
Next PlineObj

ThisDrawing.Utility.Prompt "拆除砌體總面積為:" & Str(Round(sum, 3)) & " 平方米"
sset.Delete
End Sub

D. 怎樣利用VBA提取選定的cad中多段線坐標,並將這些坐標寫入txt中

1.要改兩個部份,第一步,改首行的private 為 public
2.ss_dim.Select acSelectionSetAll, , , dxf_code, dxf_value
改正:
ss_dim.SelectOnScreen dxf_code, dxf_value

這樣就是輸出選中對象了。

----------------------------
Public Sub GetLWPOLYLINECoordinates()
Dim ss_dim As AcadSelectionSet, ent As AcadLWPolyline
Dim dxf_code() As Integer, dxf_value() As Variant
Dim i As Long, j As Long
Dim dbCor As Variant, x As Double, y As Double, z As Double

Set ss_dim = ThisDrawing.SelectionSets.Add("ssLine1")
ReDim dxf_code(0), dxf_value(0)
dxf_code(0) = 0: dxf_value(0) = "LWPOLYLINE"
'ss_dim.Select acSelectionSetAll, , , dxf_code, dxf_value
ss_dim.SelectOnScreen dxf_code, dxf_value
Open "d:\aaaaa.txt" For Append As #1

For Each ent In ss_dim
For j = 0 To UBound(ent.Coordinates) \ 2
x = ent.Coordinates(j * 2)
y = ent.Coordinates(j * 2 + 1)
Print #1, (j); ",," & x & "," & y
Next
Next
Close #1
ss_dim.Clear
ss_dim.Delete
End Sub

E. CAD VBA 獲取多段線任意一點到多段線起點的距離

你的問題可以歸納為:
1、找到多段線的起點坐標
2、找到任意點的坐標,
3、將兩個版坐標點用勾股定理算一下權距離
----其中第2條,你說的任意一點,是不是指多段線的任意轉折點,方程是列不出來,但如果你能指定某點,比如說是第三點或第四點之類的,VBA是可以解決你的問題的

F. AutoCAD VBA如何判斷拾取的曲線是多段線還是樣條曲線

可以用它們的ObjectID屬性來判斷,每個對象的ObjectID屬性值是不一樣的。

G. excel 怎麼通過vba過濾出一行的重復的數據

^

度友,你好,如圖,公式:=MID(SUM(MID(A1&1/17,SMALL(FIND(ROW($1:$10)-1,A1&1/17),ROW($1:$10)),1)/10^ROW($1:$10)),3,COUNT(FIND(ROW($1:$10)-1,A1)))

如果是2016版本的,支持TEXTJOIN的話,公式:=TEXTJOIN("",1,IF(ISNUMBER(FIND(ROW($1:$10)-1,A1)),ROW($1:$10)-1,""))

數組公式,需要shift+ctrl+enter三鍵結束

H. AutoCAD中用vba的方式,怎樣框取多條直線(或多段線)獲取相交點坐標呢

使用while函數來循環,下面是一個計算交點的autolisp代碼:

(defunc:tes(/&k1&kw1&ss1&ss2ix)
(setvar"cmdecho"0)
(setvar"blipmode"0)
(if(nullvlax-mp-object)(vl-load-com))
(princ" 請選擇曲線")
(if(setq&kw1(ssget'((0."*LINE,ARC,CIRCLE,ELLIPSE,HELIX"))))
(progn
(setq&ss1'()i-1.0)
(while(setq&k1(ssname&kw1(setqi(1+i))))
(setq&ss1(cons&k1&ss1));提取對象
);while
(while(and(setq&k1(car&ss1))(setq&ss1(cdr&ss1)));計算這條曲線與其他對象的交點
(setq&ss2(apply'append(vl-remove-if'(lambda(x)(=xnil))
(mapcar'(lambda(x)(acet-geom-intersectwith&k1x0))&ss1))))
;&ss2是計算得到的交點,沒有交點的話是nil
);while;2
)
)
(princ)
)

I. 如何用VBA過濾多列重復數據

Sub 去重方法二()

Dim d As Object, bR, arr

t = Timer
Application.ScreenUpdating = False: Application.Calculation = xlCalculationManual

zw = [XFD1].End(xlToLeft).Column ' 自動識別最後一列。從右往左,找出第一個非空單元格,取它列號。
sm = 8 '第8列,即H列,也即運單編號所在列,根據此欄位來判斷是否有重復項。8這個數字不用改。

Set c1 = Cells(1000000, sm).End(xlUp)
qq = c1.Row

bR = [A2].Resize(qq - 1, zw) '把數據區域 裝入bR數組
Set d = CreateObject("scripting.dictionary")
n = 0
ReDim arr(1 To c1.Row, 1 To zw) '定義arr數組長,寬
For i = 2 To qq
If Not d.exists(bR(i - 1, sm)) Then
d.Add bR(i - 1, sm), "" '【核心】循環 運單編號 欄位,把此欄位唯一值循環裝入字典d
n = n + 1
For j = 1 To zw
arr(n, j) = bR(i - 1, j) '同時,再把它其他信息裝入arr數組
Next
End If
Next
Range(Cells(2, "A"), Cells(1000000, zw)).ClearContents
[A2].Resize(n, zw) = arr
Set d = Nothing: Erase bR: Erase arr

Application.ScreenUpdating = True: Application.Calculation = xlCalculationAutomatic
MsgBox "搞定!耗時 " & Round(Timer - t, 0) & " 秒!已刪除 " & qq - Cells(1000000, sm).End(xlUp).Row & " 個重復項!"

End Sub

J. excel vba怎麼篩選和過濾數據

錄制一段宏,看代碼不就行了。只要界面上能操作的,不知道VBA怎麼寫都可以錄制宏,然後復制到自己的VBA代碼里修改一下即可。

閱讀全文

與vba過濾多段線相關的資料

熱點內容
西安高新區水處理公司電話 瀏覽:55
飲水機投毒後續怎麼樣了 瀏覽:316
高壓水處理系統生產許可 瀏覽:715
漢斯盾凈水器怎麼更換濾芯 瀏覽:902
水處理膜市場及價格 瀏覽:293
廢水實驗室操作規程 瀏覽:241
污水處理設備山東跑藍pl達標 瀏覽:557
怎麼加盟方太凈水器 瀏覽:508
ro膜濾芯曝光 瀏覽:359
熱水煲水垢如何快速去除 瀏覽:539
河北廊坊除垢劑 瀏覽:80
污水處理劑的介紹 瀏覽:213
拆裝燃油濾芯器需要什麼工具 瀏覽:261
浙江綠色污水凈化什麼價格 瀏覽:565
吉利帝豪gs更換空調濾芯要多少錢 瀏覽:639
超簡單飲水機怎麼做 瀏覽:268
小米凈化器凈化到多少錢 瀏覽:337
降低水的硬度是煮沸還是蒸餾 瀏覽:653
污水培訓心得體會總結 瀏覽:874
反滲透膜化學清洗一隻多錢 瀏覽:333