明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: zzyong00

用VB6进行Autocad的二次开发(原创)

    [复制链接]
发表于 2015-2-5 01:43 | 显示全部楼层
很好很强大,受教了,感谢楼主!能不能讲一些用vb6改写VBA源码的知识,我想发布一些vba程序,但又不希望别人看到源码,所以希望用VB6编译一下,这样就相对安全一些,呵呵,不知道这样弄了之后在使用上有些什么区别?还请赐教!

点评

我觉得在使用上更方便一些!不过是独立的exe文件,有些不明白的人感觉奇怪,甚至怀疑是病毒,一些无良杀软也乱报  发表于 2015-2-5 11:14
如果按照我前面说的,你的vba代码,vb6里不用更改分毫,就可以用了!  发表于 2015-2-5 11:12
 楼主| 发表于 2015-2-7 23:53 | 显示全部楼层
本帖最后由 zzyong00 于 2015-2-7 23:55 编辑

用VB和VBA开发的人实在太少了,本版块真是人气凋零啊
发表于 2015-2-8 05:06 | 显示全部楼层
谢谢赐教,我再好好消化一下前面的内容
发表于 2015-2-11 14:26 | 显示全部楼层
发表于 2015-2-12 20:10 | 显示全部楼层
谢谢楼主,学习了。
发表于 2015-3-4 10:26 | 显示全部楼层
太牛了  好好消化一下
发表于 2015-3-16 10:29 | 显示全部楼层
支持,楼主辛苦了
发表于 2015-3-18 09:15 | 显示全部楼层
xuexile!!!!!!!!!!!!
发表于 2015-3-20 13:14 | 显示全部楼层
向你好好学习学习
 楼主| 发表于 2015-3-26 22:40 | 显示全部楼层
今天看见一个用三维多线段作的地形图,没用拟合平滑。这种线,看着闹心,所以写个小代码转成多线段了!
  1.   On Error GoTo err1
  2.     Dim blnDel As Boolean
  3.     blnDel = IIf(MsgBox("是否删除源三维多线段?" & vbCrLf & "提示:如果三维多线段采用'拟合/平滑',转换后不准确!", vbYesNo + vbQuestion, "MEA") = vbYes, True, False)
  4.    
  5.     AppActivate objCad.Caption
  6.     Dim objSset As AcadSelectionSet
  7.     Dim objDoc As AcadDocument
  8.     Set objDoc = ThisDrawing()
  9.     SelectLots "MEA~PL~TMP~123", "POLYLINE" ' 三维多线段
  10.     Set objSset = objDoc.SelectionSets("MEA~PL~TMP~123")
  11.     If objSset.Count = 0 Then Exit Sub
  12.     Dim obj1 As Acad3DPolyline  
  13.     Dim objPL As AcadLWPolyline
  14.     Dim coords As Variant, coords2() As Double, dblElv As Double, flag As Boolean
  15.     Dim i As Long, j As Long
  16.     For Each obj1 In objSset
  17.         'Debug.Print obj1.ObjectName
  18.         flag = False
  19.         dblElv = 0
  20.         i = 0: j = 0
  21.         coords = obj1.Coordinates
  22.         ReDim coords2(CLng((UBound(coords) + 1) / 3 * 2) - 1)
  23.         For i = 0 To UBound(coords)
  24.             If (i + 1) Mod 3 = 0 Then
  25.                 If Not flag Then 'z坐标不一致,放弃对标高的转换,全为0
  26.                     If i = 2 Then
  27.                         dblElv = coords(2)
  28.                     Else
  29.                         If Abs(dblElv - coords(i)) > 0.00001 Then flag = True: dblElv = 0 '放弃标高
  30.                     End If
  31.                 End If
  32.             Else
  33.                 coords2(j) = coords(i)
  34.                 j = j + 1
  35.             End If
  36.         Next i
  37.         Set objPL = objDoc.ModelSpace.AddLightWeightPolyline(coords2)
  38.         objPL.Elevation = dblElv
  39.         objPL.Update
  40.         If blnDel Then obj1.Delete
  41.     Next obj1
  42.     Exit Sub
  43. err1:
  44.     Err.Clear
  45.     Debug.Print "三维多线段转多线段出错!"
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-23 20:07 , Processed in 0.240647 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表