乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 100|回复: 5

vba/vb编写的标注道路桩号的源代码!

[复制链接]

23

主题

561

帖子

13

银币

中流砥柱

Rank: 25

铜币
653
发表于 2015-4-5 23:01:00 | 显示全部楼层 |阅读模式
在本论坛的lisp版,有些高手放出了标注桩号的一些lisp代码,但在vba/vb版,却一个也没有,客观上讲,这是vba的一些弱项导致的,在vba中,没有Curve类,也没有vlax-curve-get族函数,如下:
  1. vlax-curve-getPointAtDist
  2. vlax-curve-getPointAtParam ;
  3. vlax-curve-getDistAtPoint ;
  4. vlax-curve-getDistAtParam ;
  5. vlax-curve-getParamAtPoint ;;
  6. vlax-curve-getParamAtDist ;;
  7. vlax-curve-getStartParam ;;
  8. vlax-curve-getendParam ;;
  9. vlax-curve-getStartPoint ;;;
  10. vlax-curve-getEndPoint;;
  11. vlax-curve-getFirstDeriv;;
  12. vlax-curve-getSecondDeriv;;
  13. vlax-curve-getSecondDeriv

如果自己实现以上函数,达到Autodesk函数的水平,实在不容易(也不是不可能),幸好,我们有vb调用lisp的类VLAX.cls(BY Frank Oquendo),而且,这位大神Frank Oquendo,还实现了Curve.cls类,让我们后来人轻松了很多!在此,我向前辈致敬!
由于源码中用的很多函数或过程都在这个帖子:
所以,还请各位移步!
看效果:

4gbz3t51504.gif

4gbz3t51504.gif

回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2015-4-5 23:30:00 | 显示全部楼层

刚看了下 efan的是用Arx做得Com组件,,不过支持的版本不多
原则上用VBA可以直接调用Arx的函数,efan以前也做过很多研究
有时间的话 我试试用.Net做个Com库看看
回复

使用道具 举报

23

主题

561

帖子

13

银币

中流砥柱

Rank: 25

铜币
653
发表于 2015-4-5 23:46:00 | 显示全部楼层

我没有2013,我用2014 x64测试他的arx,好像输出一个时间,但对象不能创建成功,不知道他的arx设置有过期时间,还是的确无法调用!
期盼雪版的.Net版的Curve类com库出世!
回复

使用道具 举报

23

主题

561

帖子

13

银币

中流砥柱

Rank: 25

铜币
653
发表于 2015-4-5 23:56:00 | 显示全部楼层

刚才在2004下测试efan的arx是成功的,不过,efan封装的不全,没有vlax-curve-getFirstDeriv,vlax-curve-getSecondDeriv
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2015-4-6 20:42:00 | 显示全部楼层

请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:j5yuudijxfd.rar 
下载次数:0  文件大小:6.82 KB  售价:2银币 [记录]
下载权限: 不限 以上或 Vip会员   [开通Vip]   [签到领银币]  [免费赚银币]

1.0测试版 解压上面文件后,把他们放到d:\TlsCad\Bin里面 本来写注册表可以直接做到程序里 但是测试版先随意了
运行1.reg注册
然后在cad里nerload安装。。。正式版上面的步骤会少掉
VBA引用TlsCad.Common.tlb测试代码
  1. Sub tt()
  2. Dim cm As TlsCad_Common.CurveManager
  3. Set cm = Application.GetInterfaceObject("TlsCad.Common.CurveManager")
  4. Dim obj As AcadEntity, pnts(1)
  5. ThisDrawing.Utility.GetEntity obj, pnts(0)
  6. Dim cc As TlsCad_Common.Curve
  7. Set cc = cm.Add(obj.ObjectID)
  8. pnts(0) = cc.GetClosestPointTo(pnts(0), False)
  9. pnts(1) = ThisDrawing.Utility.GetPoint()
  10. pnts(1) = cc.GetClosestPointTo(pnts(1), False)
  11. cc.SplitByParams cc.GetParamsByPoints(pnts)
  12. obj.Delete
  13. cc.Dispose
  14. End Sub

le54efdwywr.gif

le54efdwywr.gif

回复

使用道具 举报

23

主题

561

帖子

13

银币

中流砥柱

Rank: 25

铜币
653
发表于 2015-4-6 21:22:00 | 显示全部楼层
[b]雪山飞狐_lzh 发表于 2015-4-6 20:42
我在autocad2008下也没用调用成功
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-4-20 15:11 , Processed in 1.016128 second(s), 70 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表