szj612
发表于 2015-2-5 01:43:39
很好很强大,受教了,感谢楼主!能不能讲一些用vb6改写VBA源码的知识,我想发布一些vba程序,但又不希望别人看到源码,所以希望用VB6编译一下,这样就相对安全一些,呵呵,不知道这样弄了之后在使用上有些什么区别?还请赐教!
zzyong00
发表于 2015-2-7 23:53:50
本帖最后由 zzyong00 于 2015-2-7 23:55 编辑
用VB和VBA开发的人实在太少了,本版块真是人气凋零啊
szj612
发表于 2015-2-8 05:06:23
谢谢赐教,我再好好消化一下前面的内容
jinmaji
发表于 2015-2-11 14:26:33
pmq
发表于 2015-2-12 20:10:45
谢谢楼主,学习了。
MTC
发表于 2015-3-4 10:26:41
太牛了好好消化一下
wycl8
发表于 2015-3-16 10:29:09
支持,楼主辛苦了
zjy2999
发表于 2015-3-18 09:15:06
xuexile!!!!!!!!!!!!
xsshhl
发表于 2015-3-20 13:14:33
向你好好学习学习
zzyong00
发表于 2015-3-26 22:40:58
今天看见一个用三维多线段作的地形图,没用拟合平滑。这种线,看着闹心,所以写个小代码转成多线段了!
On Error GoTo err1
Dim blnDel As Boolean
blnDel = IIf(MsgBox("是否删除源三维多线段?" & vbCrLf & "提示:如果三维多线段采用'拟合/平滑',转换后不准确!", vbYesNo + vbQuestion, "MEA") = vbYes, True, False)
AppActivate objCad.Caption
Dim objSset As AcadSelectionSet
Dim objDoc As AcadDocument
Set objDoc = ThisDrawing()
SelectLots "MEA~PL~TMP~123", "POLYLINE" ' 三维多线段
Set objSset = objDoc.SelectionSets("MEA~PL~TMP~123")
If objSset.Count = 0 Then Exit Sub
Dim obj1 As Acad3DPolyline
Dim objPL As AcadLWPolyline
Dim coords As Variant, coords2() As Double, dblElv As Double, flag As Boolean
Dim i As Long, j As Long
For Each obj1 In objSset
'Debug.Print obj1.ObjectName
flag = False
dblElv = 0
i = 0: j = 0
coords = obj1.Coordinates
ReDim coords2(CLng((UBound(coords) + 1) / 3 * 2) - 1)
For i = 0 To UBound(coords)
If (i + 1) Mod 3 = 0 Then
If Not flag Then 'z坐标不一致,放弃对标高的转换,全为0
If i = 2 Then
dblElv = coords(2)
Else
If Abs(dblElv - coords(i)) > 0.00001 Then flag = True: dblElv = 0 '放弃标高
End If
End If
Else
coords2(j) = coords(i)
j = j + 1
End If
Next i
Set objPL = objDoc.ModelSpace.AddLightWeightPolyline(coords2)
objPL.Elevation = dblElv
objPL.Update
If blnDel Then obj1.Delete
Next obj1
Exit Sub
err1:
Err.Clear
Debug.Print "三维多线段转多线段出错!"
页:
1
2
3
4
[5]
6
7
8
9
10
11
12
13
14