乐筑天下

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

[编程交流] 需要Lisp:将节点放置在cen

[复制链接]

7

主题

55

帖子

48

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 15:07:06 | 显示全部楼层 |阅读模式
你好我已经有一段时间没来了。想念你们。
 
我需要询问是否有人有或可以编写一个Lisp例程,将节点放置在图形中多个(100+)圆的中心。我需要一些2D的东西。三维中的高程不是问题。
 
听起来很简单,但我的同事们都被难住了。
 
任何帮助都会很棒!
 
正在运行:
AutoCad 2012和AutoCad MEP 2012
Windows 7 Professional 64位
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-5 15:14:47 | 显示全部楼层
从上一个线程中解救出来,并进行了一些调整:
  1. ;Add Points to Circles (11-VII-2012)
  2. (defun c:APC( / ssetCircles countCircles itemCircle assocCircle assocPoint  )
  3. (if (setq ssetCircles (ssget "_X" '((0 . "CIRCLE"))))
  4. (repeat (setq countCircles (sslength ssetCircles))
  5.   (setq itemCircle (ssname ssetCircles 0)
  6.         assocCircle (entget itemCircle)
  7.         assocPoint  '((0 . "POINT")))
  8.   (foreach codeDXF '(10 8 410 210)
  9.    (setq assocPoint (append assocPoint (list (assoc codeDXF assocCircle))))
  10.   )
  11.   (if (assoc 62 assocCircle)
  12.    (setq assocPoint (append assocPoint (list (assoc 62 assocCircle)))))
  13.   (if (assoc 6 assocCircle)
  14.    (setq assocPoint (append assocPoint (list (assoc 6 assocCircle))))) ;???
  15.   (entmakex assocPoint)
  16.   (ssdel itemCircle ssetCircles)
  17. )
  18. )
  19. (prompt (strcat "\nReplaced " (itoa countCircles) " circles."))
  20. (princ)
  21. )
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 15:17:14 | 显示全部楼层
大概
 
  1. (defun c:Test (/ ss)
  2. (if (setq ss (ssget "_x" '((0 . "CIRCLE"))))
  3.    ((lambda (i / sn e)
  4.       (while (setq sn (ssname ss (setq i (1+ i))))
  5.          (entmakex (list '(0 . "POINT") (assoc 10 (setq e (entget sn)))(assoc 8 e)))))
  6.      -1
  7.    )
  8.    (princ)
  9. )
  10. (princ)
  11. )
回复

使用道具 举报

7

主题

55

帖子

48

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 15:22:51 | 显示全部楼层
“APC”非常接近。
 
我使用此命令的情况是在图形中使用圆进行外部参照以表示管道支架。我需要在当前图形中的圆心内放置一个节点,然后拆离外部参照。因此,没有必要替换圆。
 
也许有一个Lisp来寻找中心,而不是具体的圆。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 15:26:46 | 显示全部楼层
 
以下内容适用于具有任何方向、比例或旋转的块/动态块/外部参照:
 
  1. [color=GREEN];; Points at Circle Centres within Block  -  Lee Mac[/color]
  2. [color=GREEN];; Prompts for selection of a block and creates points in modelspace[/color]
  3. [color=GREEN];; at the centre of every circle in the selected block[/color]
  4. ([color=BLUE]defun[/color] c:ptcirblk ( [color=BLUE]/[/color] bd en ml )
  5.    ([color=BLUE]while[/color]
  6.        ([color=BLUE]progn[/color] ([color=BLUE]setvar[/color] 'errno 0) ([color=BLUE]setq[/color] en ([color=BLUE]car[/color] ([color=BLUE]entsel[/color] [color=MAROON]"\nSelect Block: "[/color])))
  7.            ([color=BLUE]cond[/color]
  8.                (   ([color=BLUE]=[/color] 7 ([color=BLUE]getvar[/color] 'errno))
  9.                    ([color=BLUE]princ[/color] [color=MAROON]"\nMissed, try again."[/color])
  10.                )
  11.                (   ([color=BLUE]=[/color] 'ename ([color=BLUE]type[/color] en))
  12.                    ([color=BLUE]if[/color] ([color=BLUE]/=[/color] [color=MAROON]"INSERT"[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 0 ([color=BLUE]entget[/color] en))))
  13.                        ([color=BLUE]princ[/color] [color=MAROON]"\nSelected Object is not a Block."[/color])
  14.                    )
  15.                )
  16.            )
  17.        )
  18.    )
  19.    ([color=BLUE]if[/color] en
  20.        ([color=BLUE]progn[/color]
  21.            ([color=BLUE]setq[/color] bd ([color=BLUE]tblobjname[/color] [color=MAROON]"BLOCK"[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 2 ([color=BLUE]entget[/color] en))))
  22.                  ml (RefGeom en)
  23.            )
  24.            ([color=BLUE]while[/color] ([color=BLUE]setq[/color] bd ([color=BLUE]entnext[/color] bd))
  25.                ([color=BLUE]if[/color] ([color=BLUE]=[/color] [color=MAROON]"CIRCLE"[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 0 ([color=BLUE]entget[/color] bd))))
  26.                    ([color=BLUE]entmake[/color]
  27.                        ([color=BLUE]list[/color]
  28.                           '(0 . [color=MAROON]"POINT"[/color])
  29.                            ([color=BLUE]cons[/color] 10 ([color=BLUE]mapcar[/color] '[color=BLUE]+[/color] (mxv ([color=BLUE]car[/color] ml) ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 10 ([color=BLUE]entget[/color] bd)))) ([color=BLUE]cadr[/color] ml)))
  30.                        )
  31.                    )
  32.                )
  33.            )
  34.        )
  35.    )
  36.    ([color=BLUE]princ[/color])
  37. )
  38. [color=GREEN];; RefGeom (gile)[/color]
  39. [color=GREEN];; Returns a list which first item is a 3x3 transformation matrix (rotation,[/color]
  40. [color=GREEN];; scales, normal) and second item the object insertion point in its parent[/color]
  41. [color=GREEN];; (xref, block or space)[/color]
  42. [color=GREEN];;[/color]
  43. [color=GREEN];; Argument : an ename[/color]
  44. ([color=BLUE]defun[/color] RefGeom ( ename [color=BLUE]/[/color] elst ang norm mat )
  45.    ([color=BLUE]setq[/color] elst ([color=BLUE]entget[/color] ename)
  46.          ang  ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 50 elst))
  47.          norm ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 210 elst))
  48.    )
  49.    ([color=BLUE]list[/color]
  50.        ([color=BLUE]setq[/color] mat
  51.            (mxm
  52.                ([color=BLUE]mapcar[/color] '([color=BLUE]lambda[/color] ( v ) ([color=BLUE]trans[/color] v 0 norm [color=BLUE]t[/color]))
  53.                   '(
  54.                        (1.0 0.0 0.0)
  55.                        (0.0 1.0 0.0)
  56.                        (0.0 0.0 1.0)
  57.                    )
  58.                )
  59.                (mxm
  60.                    ([color=BLUE]list[/color]
  61.                        ([color=BLUE]list[/color] ([color=BLUE]cos[/color] ang) ([color=BLUE]-[/color] ([color=BLUE]sin[/color] ang)) 0.0)
  62.                        ([color=BLUE]list[/color] ([color=BLUE]sin[/color] ang) ([color=BLUE]cos[/color] ang)     0.0)
  63.                       '(0.0 0.0 1.0)
  64.                    )
  65.                    ([color=BLUE]list[/color]
  66.                        ([color=BLUE]list[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 41 elst)) 0.0 0.0)
  67.                        ([color=BLUE]list[/color] 0.0 ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 42 elst)) 0.0)
  68.                        ([color=BLUE]list[/color] 0.0 0.0 ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 43 elst)))
  69.                    )
  70.                )
  71.            )
  72.        )
  73.        ([color=BLUE]mapcar[/color] '[color=BLUE]-[/color] ([color=BLUE]trans[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 10 elst)) norm 0)
  74.            (mxv mat ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 10 ([color=BLUE]tblsearch[/color] [color=MAROON]"BLOCK"[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 2 elst))))))
  75.        )
  76.    )
  77. )
  78. [color=GREEN];; Matrix Transpose  -  Doug Wilson[/color]
  79. [color=GREEN];; Args: m - nxn matrix[/color]
  80. ([color=BLUE]defun[/color] trp ( m )
  81.    ([color=BLUE]apply[/color] '[color=BLUE]mapcar[/color] ([color=BLUE]cons[/color] '[color=BLUE]list[/color] m))
  82. )
  83. [color=GREEN];; Matrix x Vector  -  Vladimir Nesterovsky[/color]
  84. [color=GREEN];; Args: m - nxn matrix, v - vector in R^n[/color]
  85. ([color=BLUE]defun[/color] mxv ( m v )
  86.    ([color=BLUE]mapcar[/color] '([color=BLUE]lambda[/color] ( r ) ([color=BLUE]apply[/color] '[color=BLUE]+[/color] ([color=BLUE]mapcar[/color] '[color=BLUE]*[/color] r v))) m)
  87. )
  88. [color=GREEN];; Matrix x Matrix  -  Vladimir Nesterovsky[/color]
  89. [color=GREEN];; Args: m,n - nxn matrices[/color]
  90. ([color=BLUE]defun[/color] mxm ( m n )
  91.    (([color=BLUE]lambda[/color] ( a ) ([color=BLUE]mapcar[/color] '([color=BLUE]lambda[/color] ( r ) (mxv a r)) m)) (trp n))
  92. )
  93. ([color=BLUE]princ[/color])
回复

使用道具 举报

7

主题

55

帖子

48

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 15:27:11 | 显示全部楼层
如果有帮助,我正在与TSI看台合作。每个展台周围都有一个圆圈,表示“净空区域”。
 
如果我分解支架,圆形消失,支架的其余部分变成3d面。
 
也许这就是为什么李·麦克的Lisp程序不能作画的原因。TSI项不被视为块。
 
如果我能找到一种从TSI支架中提取该圆的方法,我可以在此线程上使用第一个lisp,或者找到一个可以识别项目中圆的lisp。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 15:34:54 | 显示全部楼层
也许如果你在第一篇文章中提供了所有必要的信息,我们的时间就不会浪费
回复

使用道具 举报

7

主题

55

帖子

48

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 15:37:21 | 显示全部楼层
我道歉。
 
我不知道dteails需要有多具体。
 
令人惊讶的是,简单的概念需要如此详细的解决方案。
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-5 15:41:54 | 显示全部楼层
那些TSI展台是什么?实体是否特定于MEP?
回复

使用道具 举报

7

主题

55

帖子

48

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 15:45:20 | 显示全部楼层
它们是CADDUT项目。
 
TSI是一家销售该软件的公司,他们也知道什么时候需要这个lisp工具,但他们想要更多的钱给我们。
 
所以我希望暂时能找到一份工作。
 
我想如果我能找到一个lisp,将节点放置在外部参照的CADDUT项的中心,我现在会冷静下来。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 21:04 , Processed in 2.655305 second(s), 72 queries .

© 2020-2025 乐筑天下

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