乐筑天下

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

[编程交流] 测量多段线并指定

[复制链接]

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 10:11:08 | 显示全部楼层 |阅读模式
你好
 
我需要将一些管道(或管道)从Autocad转移到另一个程序中进行专业分析。该分析要求我将管道作为1m长的零件。
 
我找到了lisp代码来测量线并每隔1米放置一个标记(块),还有一个程序将块坐标提取到文本文件中(然后允许我将线重新加载到第三方应用程序)。
 
然而,这个过程涉及到了所有的方面,所以我重新构建的路线并不完全是我开始的路线。
 
我需要一个lisp代码来测量多段线,但也将块标记放置在多段线的顶点。
 
作为辅助项,可以使用文本作为块,并修改文本,使其扩展1,2,3,。。。这将有助于我确保在第三方应用程序中正确地重新构建该行,尤其是当我想同时执行多行时。
 
我在R10和R12上都有一些使用Autolisp的经验,但在过去的10年里没有太多接触过。所以我想我可以修改提供的代码,以适应R2006,如果您更喜欢只在R2010上测试的代码等。。
 
干杯
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 10:38:07 | 显示全部楼层
分段时需要检查代码中是否有小于1m的余数,然后写出vertice并继续。它现在应该这样做,否则它不会做1m段,除非它使用除法或度量,而不是从第一个主体计算,在这种情况下,您将需要一个不同的程序。
 
你能把现在的代码贴出来吗。
 
此外,在这里搜索“沿多段线的链测长度”可能是一个很好的起点,它可以做你想要的。
回复

使用道具 举报

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 10:42:30 | 显示全部楼层
实际上,这只是“measure”命令周围的一段代码-很抱歉,我没有说得足够清楚。我不确定这会对你有多大帮助。我试图编辑“tag”中的文字,使其成为trk_nam,但从未真正做到任何地方。。
 
(setq trk_nam“”)
(defun C:轨迹(/)
(setq trk_nam(getstring“音轨名称:”))
(setq dist_pts(getreal“点之间的距离:”))
(命令“measure”pause“B”“tag”“Y”dist\u pts)
)
回复

使用道具 举报

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 10:59:19 | 显示全部楼层
谢谢你的搜索建议。我设法找到了一个线程,它提供了一些接近我需要的东西,在学习了一些ActiveX之后,我设法修改它以获得我需要的东西。
 
这就是我想到的:
  1. (defun c:pldiv (/ actDoc spFlag actSp poly
  2.         sumDis nextPt oldDist oldNum)
  3. (vl-load-com)
  4. (setq actDoc(vla-get-ActiveDocument
  5.          (vlax-get-acad-object))
  6. spFlag(vla-get-ActiveSpace actDoc)
  7.        ); end setq
  8. (if(= 0 spFlag)
  9. (setq actSp(vla-get-PaperSpace actDoc))
  10. (setq actSp(vla-get-ModelSpace actDoc))
  11. ); end if
  12. (if(not pldiv:dist)(setq pldiv:dist 1.0))
  13. (if(not pldiv:num)(setq pldiv:num 1))
  14.   (setq stFlag T
  15.         sumDis 0.0
  16. oldDist pldiv:dist
  17. oldNum pldiv:num
  18. pldiv:dist
  19.   (getdist
  20.     (strcat
  21.       "\nSpecify distance <"(rtos pldiv:dist)">: "))
  22. pldiv:num
  23.   (getint
  24.     (strcat
  25.       "\nSpecify start number <"(itoa pldiv:num)">: "))
  26. ); end setq
  27. (if(not pldiv:dist)(setq pldiv:dist oldDist))
  28. (if(not pldiv:num)(setq pldiv:num oldNum))
  29. (princ "\n*** Select line, polyline or spline *** ")
  30. (if
  31.    (and
  32.    (setq poly
  33.     (ssget "_:S"
  34.      '((0 . "*LINE")(-4 . "<NOT")(0 . "MLINE")(-4 . "NOT>"))))
  35.    (setq nextPt
  36.    (getpoint "\nSpecify start point at curve > "))
  37.    (vlax-curve-getDistAtPoint
  38.      (setq poly(vlax-ename->vla-object(ssname poly 0)))
  39.      nextPt)
  40.    ); end and   
  41.    (progn
  42.      (setq next_vtx_param 1
  43.   next_vtx_dist (vlax-curve-getDistAtParam poly next_vtx_param)
  44.   ); end setq
  45.      (while nextPt
  46.   (while (> sumDis next_vtx_dist)
  47. (progn
  48. (setq VtxPt(vlax-curve-getPointAtParam poly next_vtx_param))
  49. (vla-AddPoint actSp(vlax-3d-point VtxPt))
  50. (vla-AddText actSp (itoa pldiv:num)
  51.     (vlax-3d-point VtxPt)(getvar "TEXTSIZE"))
  52. (setq next_vtx_param (+ 1 next_vtx_param)
  53.        next_vtx_dist (vlax-curve-getDistAtParam poly next_vtx_param)
  54.        pldiv:num(1+ pldiv:num)
  55.        );end set q
  56. ) ; end progn
  57.   );end while
  58. (vla-AddPoint actSp(vlax-3d-point nextPt))
  59. (vla-AddText actSp (itoa pldiv:num)
  60.    (vlax-3d-point nextPt)(getvar "TEXTSIZE"))  
  61. (setq  sumDis (+ sumDis pldiv:dist)
  62. pldiv:num(1+ pldiv:num)
  63.         nextPt(vlax-curve-getPointAtDist poly sumDis)
  64.        ); end setq
  65.       ); end while
  66.      (setq endParam (vlax-curve-getEndParam poly)
  67.            EndPoint(vlax-curve-getPointAtParam poly endParam))
  68.       (vla-AddPoint actSp(vlax-3d-point EndPoint))
  69. (vla-AddText actSp (itoa pldiv:num)
  70.    (vlax-3d-point EndPoint)(getvar "TEXTSIZE"))  
  71.      ); end progn
  72.    (princ "\nERROR. Empty selection, invalid object type or point not at curve. ")
  73.    ); end if
  74. (princ)
  75. );
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 11:14:26 | 显示全部楼层
这对我来说非常有用!!!但我想在数字前加一段文字。
 
有可能吗?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 20:46 , Processed in 0.322417 second(s), 62 queries .

© 2020-2025 乐筑天下

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