乐筑天下

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

[编程交流] pol之间的自动距离

[复制链接]

1

主题

5

帖子

4

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 22:16:33 | 显示全部楼层 |阅读模式
我需要一些LISP例程自动编号多边形顶点之间的距离。
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-5 22:26:10 | 显示全部楼层
为此,我将使用具有适当标注样式的内置QDIM命令(即隐藏箭头、尺寸界线和尺寸线);不要忘记先设置适当的UCS。调用QSELECT后,使用过滤器选择测量特征小于给定值的尺寸,并将其删除。这也将确保结果是关联的。
回复

使用道具 举报

1

主题

5

帖子

4

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 22:28:06 | 显示全部楼层
出于某种奇怪的原因,QDIM似乎无法在AutoCad Map上工作。很遗憾,上面的建议并没有解决这个问题。这个LISP例程将非常有帮助,因为在每个顶点之间放置这些距离需要很长时间。
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 22:33:54 | 显示全部楼层
我不确定它是否与之前的线程类似?
 
距离文本是关联的,因为它实际上是一个没有箭头的维度,看起来像普通的线对象(类似于mircea的想法)
如果只是一段距离?
  1. (defun c:test (/ p l e d var )
  2. (setq        l   '("CMDECHO" "OSMODE" "DIMTIH" "DIMTOH" "DIMASSOC")
  3. var (mapcar 'getvar l)
  4. ) ;_ end of setq
  5. (mapcar 'setvar l '(0 0 0 0 2))
  6. (if (setq e (car (entsel "\nPick polygon.. "))) ;[color="red"]<---LWPOLYLINE[/color]
  7.    (setq p (mapcar 'cdr (vl-remove-if-not ''((x) (= (car x) 10)) (entget e)))
  8.   p (if        (= (cdr (assoc 70 (entget e))) 1)
  9.       (append p (list (car p) (cadr p)))
  10.       p
  11.       ) ; if
  12.   d (mapcar ''((a b) ([color="blue"]ppdim[/color] a b)) p (cdr p))
  13.   ) ;_ end of setq
  14.    (princ "\nInvalid. ")
  15.    ) ;_ end of if
  16. (mapcar 'setvar l var)
  17. (princ)
  18. ) ;_ end of defun
  19. ;little tweak from previous [color="red"]ldim[/color] function
  20. ;http://www.cadtutor.net/forum/showthread.php?89187-Not-Aligned-Not-Linear-Lengths-but-geometric-or-List-Length
  21. (defun [color="blue"]ppdim[/color] ( p1 p2 / mp sz )
  22. ;hanhphuc 24/10/2014
  23. (setq sz (* 0.05 (distance p1 p2)) mp (mapcar '(lambda (a b) (* 0.5 (+ a b))) p1 p2))
  24. (vl-cmdf "_dimaligned" p1 p2 mp)
  25. ('((obj)
  26.     (mapcar
  27.      '(lambda (a b) (vlax-put obj a b))
  28.      '("Arrowhead1Type"         "Arrowhead2Type"          "extensionlineextend"           "extensionlineoffset"
  29. "TextHeight"                 "TextInside"                  "VerticalTextPosition"   "TextGap"
  30. )
  31.      (list 19 19 0. 0. sz 1 1 sz)
  32.      )
  33.     (vlax-put-property obj 'TextFill :vlax-true)
  34.     )
  35.    (vlax-ename->vla-object (entlast))
  36.    )
  37. ) ;_ end of defun
回复

使用道具 举报

1

主题

5

帖子

4

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 22:38:49 | 显示全部楼层
太棒了,它删除了textfill。但我还想删除数字下方的尺寸线。数字应该四舍五入到小数点后2位,每个数字都应该出现在多边形之外。有可能实现这些要求吗?
231640icczf3i43rjxyjb6.jpg
231642s45nnn65unzn0idi.jpg
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 22:41:49 | 显示全部楼层
 
 
 
  1. ..
  2. (vlax-put-property obj 'TextFill :vlax-true)
  3. ..

 
该对象实际上是一个维度,它使用当前的dimstyle,
但如果你想移除它,我认为需要爆炸,但它会变得非关联。
如果只是简单地将文本放置在多边形上,可以重新编写新代码,也可以只搜索web
回复

使用道具 举报

1

主题

5

帖子

4

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 22:47:20 | 显示全部楼层
将其添加到(ppdim)子功能中
 
  1. (defun c:test (/ p l e d var )
  2. (setq        l   '("CMDECHO" "OSMODE" "DIMTIH" "DIMTOH" "DIMASSOC" [color="red"]"DIMDEC"[/color])
  3. var (mapcar 'getvar l)
  4. ) ;_ end of setq
  5. (mapcar 'setvar l '(0 0 0 0 2 [color="red"]2[/color]))
  6. ...
  7. ...
HTH,M.R。
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 22:53:51 | 显示全部楼层
太好了,数字下面的那行不再出现了。剩下的唯一一件事是如何使所有数字显示在多边形之外?
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 22:56:45 | 显示全部楼层
在我的Lisp程序中,像autoaldim。lsp,我在www,pdim上找到了。具有此选项的lsp(内部/外部)。。。现在,您必须将已经解释的内容与此pdim结合起来。lsp。。。
 
  1.      '("Arrowhead1Type"     "Arrowhead2Type"      "extensionlineextend"       "extensionlineoffset"
  2.        "TextHeight"         "TextInside"          "VerticalTextPosition"      "TextGap"
  3.        [color=red]"DimLine1Suppress"   "DimLine2Suppress"[/color]
  4.        )
  5.      (list 19 19 0. 0. sz 1 1 sz [color=red]1 1[/color])

 
HTH公司
回复

使用道具 举报

1

主题

5

帖子

4

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 23:02:20 | 显示全部楼层
 
您的pdim工作正常,但如果OP不需要尺寸线。
我的2美分:制作独特的“pdim”层。
c:pdim done->分解的“pdim”->ssget all exploded line->(命令“\u erase”ss)
 
*OP可以选择是否关联
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 06:14 , Processed in 0.522260 second(s), 74 queries .

© 2020-2025 乐筑天下

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