乐筑天下

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

[编程交流] 多个Poi上的多个块

[复制链接]

14

主题

47

帖子

33

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 07:21:52 | 显示全部楼层 |阅读模式
海专家,
 
如果我们有一个图形,其点超过1层(例如10层或20层,每层50个点),我们需要在一个层的每个点上放置一个块,并诸如此类。如果我们知道块与层具有相同的名称。
例如,层=树&块=树,层=棕榈&块=棕榈,层=杆&块=杆,层=垃圾箱&块=垃圾箱等等。
 
是否有任何lisp,我们可以通过它将不同的块放置在不同的层上,所有这些都在一个选择的窗口中。
 
当做
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:37:59 | 显示全部楼层
试一试:
 
  1. ([color=BLUE]defun[/color] c:test ( [color=BLUE]/[/color] acdoc acsel acspc blk lay lst )
  2.    ([color=BLUE]setq[/color] acdoc ([color=BLUE]vla-get-activedocument[/color] ([color=BLUE]vlax-get-acad-object[/color]))
  3.          acspc ([color=BLUE]vlax-get-property[/color] acdoc ([color=BLUE]if[/color] ([color=BLUE]=[/color] 1 ([color=BLUE]getvar[/color] 'CVPORT)) 'paperspace 'modelspace))
  4.    )
  5.    ([color=BLUE]cond[/color]
  6.        (   ([color=BLUE]=[/color] 4 ([color=BLUE]logand[/color] 4 ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 70 ([color=BLUE]tblsearch[/color] [color=MAROON]"LAYER"[/color] ([color=BLUE]getvar[/color] 'CLAYER))))))
  7.            ([color=BLUE]princ[/color] [color=MAROON]"\nCurrent Layer Locked."[/color])
  8.        )
  9.        (   ([color=BLUE]ssget[/color] '((0 . [color=MAROON]"POINT"[/color])))
  10.            ([color=BLUE]vlax-for[/color] obj ([color=BLUE]setq[/color] acsel ([color=BLUE]vla-get-activeselectionset[/color] acdoc))
  11.                ([color=BLUE]if[/color]
  12.                    ([color=BLUE]or[/color]
  13.                        ([color=BLUE]and[/color]
  14.                            ([color=BLUE]member[/color] ([color=BLUE]setq[/color] lay ([color=BLUE]vla-get-layer[/color] obj)) lst)
  15.                            ([color=BLUE]setq[/color] blk lay)
  16.                        )
  17.                        ([color=BLUE]and[/color]
  18.                            ([color=BLUE]tblsearch[/color] [color=MAROON]"BLOCK"[/color] lay)
  19.                            ([color=BLUE]setq[/color] lst ([color=BLUE]cons[/color] lay lst)
  20.                                  blk lay
  21.                            )
  22.                        )
  23.                        ([color=BLUE]setq[/color] blk ([color=BLUE]findfile[/color] ([color=BLUE]strcat[/color] lay [color=MAROON]".dwg"[/color])))
  24.                    )
  25.                    ([color=BLUE]vla-put-layer[/color] ([color=BLUE]vla-insertblock[/color] acspc ([color=BLUE]vla-get-coordinates[/color] obj) blk 1.0 1.0 1.0 0.0) lay)
  26.                )
  27.            )
  28.            ([color=BLUE]vla-delete[/color] acsel)
  29.        )
  30.    )
  31.    ([color=BLUE]princ[/color])
  32. )
  33. ([color=BLUE]vl-load-com[/color]) ([color=BLUE]princ[/color])
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 07:43:59 | 显示全部楼层
完全未经测试:
 
 
  1. [b][color=BLACK]([/color][/b]defun c:test [b][color=FUCHSIA]([/color][/b]/ dl td ln bn ss en ed i[b][color=FUCHSIA])[/color][/b]
  2. [color=#8b4513];;;DEFINE THE DELIMITER[/color]
  3. [b][color=FUCHSIA]([/color][/b]setq dl [color=#2f4f4f]" & "[/color][b][color=FUCHSIA])[/color][/b]
  4. [color=#8b4513];;;SETP THROUGH THE LAYER TABLE[/color]
  5. [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]setq td [b][color=MAROON]([/color][/b]tblnext [color=#2f4f4f]"LAYER"[/color] [b][color=GREEN]([/color][/b]not td[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  6.         [b][color=NAVY]([/color][/b]and [b][color=MAROON]([/color][/b]setq ln [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 2 td[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  7.              [b][color=MAROON]([/color][/b]wcmatch ln [b][color=GREEN]([/color][/b]strcat [color=#2f4f4f]"*"[/color] dl [color=#2f4f4f]"*"[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  8.              [b][color=MAROON]([/color][/b]setq i 1[b][color=MAROON])[/color][/b]
  9.              [b][color=MAROON]([/color][/b]while [b][color=GREEN]([/color][/b]/= [b][color=BLUE]([/color][/b]substr ln i [b][color=RED]([/color][/b]strlen dl[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  10.                     [b][color=GREEN]([/color][/b]setq i [b][color=BLUE]([/color][/b]1+ i[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  11.              [b][color=MAROON]([/color][/b]setq bn [b][color=GREEN]([/color][/b]substr ln 1 [b][color=BLUE]([/color][/b]1- i[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  12.              [b][color=MAROON]([/color][/b]or [b][color=GREEN]([/color][/b]findfile [b][color=BLUE]([/color][/b]strcat bn [color=#2f4f4f]".dwg"[/color][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  13.                  [b][color=GREEN]([/color][/b]tblsearch [color=#2f4f4f]"BLOCK"[/color] bn[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  14.              [b][color=MAROON]([/color][/b]setq ss [b][color=GREEN]([/color][/b]ssget [color=#2f4f4f]"X"[/color] [b][color=BLUE]([/color][/b]list [b][color=RED]([/color][/b]cons 0 [color=#2f4f4f]"POINT"[/color][b][color=RED])[/color][/b][b][color=RED]([/color][/b]cons 8 ln[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  15.              [b][color=MAROON]([/color][/b]not [b][color=GREEN]([/color][/b]ssget [color=#2f4f4f]"X"[/color] [b][color=BLUE]([/color][/b]list [b][color=RED]([/color][/b]cons 0 [color=#2f4f4f]"INSERT"[/color][b][color=RED])[/color][/b]
  16.                                    [b][color=RED]([/color][/b]cons 2 bn[b][color=RED])[/color][/b]
  17.                                    [b][color=RED]([/color][/b]cons 8 ln[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  18.              [b][color=MAROON]([/color][/b]while [b][color=GREEN]([/color][/b]setq en [b][color=BLUE]([/color][/b]ssname ss 0[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  19.                     [b][color=GREEN]([/color][/b]setq ed [b][color=BLUE]([/color][/b]entget en[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  20.                     [b][color=GREEN]([/color][/b]if [b][color=BLUE]([/color][/b]not [b][color=RED]([/color][/b]tblsearch [color=#2f4f4f]"BLOCK"[/color] bn[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
  21.                         [b][color=BLUE]([/color][/b]progn [b][color=RED]([/color][/b]command [color=#2f4f4f]"_.INSERT"[/color] bn[b][color=RED])[/color][/b]
  22.                                [b][color=RED]([/color][/b]command[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  23.                     [b][color=GREEN]([/color][/b]entmake [b][color=BLUE]([/color][/b]list [b][color=RED]([/color][/b]cons 0 [color=#2f4f4f]"INSERT"[/color][b][color=RED])[/color][/b]
  24.                                    [b][color=RED]([/color][/b]cons 2 bn[b][color=RED])[/color][/b]
  25.                                    [b][color=RED]([/color][/b]assoc 8 ed[b][color=RED])[/color][/b]
  26.                                    [b][color=RED]([/color][/b]assoc 10 ed[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  27.                     [b][color=GREEN]([/color][/b]ssdel en ss[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  28. [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 
 
-大卫
回复

使用道具 举报

14

主题

47

帖子

33

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 07:50:06 | 显示全部楼层
感谢李的出色工作,
 
谢谢david,但我还没有试过你的代码,
 
迎合双方的努力,
 
当做
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:02:59 | 显示全部楼层
不客气,西莫。
回复

使用道具 举报

14

主题

47

帖子

33

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 08:11:14 | 显示全部楼层
李海,
再次需要您的帮助,现在图形中的块名为sp,而不是point。在本例中,我尝试将代码(ssget’((0。“POINT”))更改为(ssget’((0。“insert”))
选择对象:;错误:ActiveX服务器返回错误:未知名称:坐标
 
和(ssget’((0。“block”))它显示了messege命令:TEST
选择对象:指定对角点:0
选择对象:*取消*
; 错误:功能已取消
 
你的帮助太过分了。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:14:30 | 显示全部楼层
块参照没有坐标特性,而是使用InsertionPoint特性来存储其插入点的坐标,因此代码变为:
 
  1. ([color=BLUE]defun[/color] c:test ( [color=BLUE]/[/color] acdoc acsel acspc blk lay lst )
  2.    ([color=BLUE]setq[/color] acdoc ([color=BLUE]vla-get-activedocument[/color] ([color=BLUE]vlax-get-acad-object[/color]))
  3.          acspc ([color=BLUE]vlax-get-property[/color] acdoc ([color=BLUE]if[/color] ([color=BLUE]=[/color] 1 ([color=BLUE]getvar[/color] 'CVPORT)) 'paperspace 'modelspace))
  4.    )
  5.    ([color=BLUE]cond[/color]
  6.        (   ([color=BLUE]=[/color] 4 ([color=BLUE]logand[/color] 4 ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 70 ([color=BLUE]tblsearch[/color] [color=MAROON]"LAYER"[/color] ([color=BLUE]getvar[/color] 'CLAYER))))))
  7.            ([color=BLUE]princ[/color] [color=MAROON]"\nCurrent Layer Locked."[/color])
  8.        )
  9.        (   ([color=BLUE]ssget[/color] '([highlight](0 . [color=MAROON]"INSERT"[/color]) (2 . [color=MAROON]"SP"[/color])[/highlight]))
  10.            ([color=BLUE]vlax-for[/color] obj ([color=BLUE]setq[/color] acsel ([color=BLUE]vla-get-activeselectionset[/color] acdoc))
  11.                ([color=BLUE]if[/color]
  12.                    ([color=BLUE]or[/color]
  13.                        ([color=BLUE]and[/color]
  14.                            ([color=BLUE]member[/color] ([color=BLUE]setq[/color] lay ([color=BLUE]vla-get-layer[/color] obj)) lst)
  15.                            ([color=BLUE]setq[/color] blk lay)
  16.                        )
  17.                        ([color=BLUE]and[/color]
  18.                            ([color=BLUE]tblsearch[/color] [color=MAROON]"BLOCK"[/color] lay)
  19.                            ([color=BLUE]setq[/color] lst ([color=BLUE]cons[/color] lay lst)
  20.                                  blk lay
  21.                            )
  22.                        )
  23.                        ([color=BLUE]setq[/color] blk ([color=BLUE]findfile[/color] ([color=BLUE]strcat[/color] lay [color=MAROON]".dwg"[/color])))
  24.                    )
  25.                    ([color=BLUE]vla-put-layer[/color] ([color=BLUE]vla-insertblock[/color] acspc [highlight]([color=BLUE]vla-get-insertionpoint[/color] obj)[/highlight] blk 1.0 1.0 1.0 0.0) lay)
  26.                )
  27.            )
  28.            ([color=BLUE]vla-delete[/color] acsel)
  29.        )
  30.    )
  31.    ([color=BLUE]princ[/color])
  32. )
  33. ([color=BLUE]vl-load-com[/color]) ([color=BLUE]princ[/color])
[未测试,假设块“SP”不是动态的]
回复

使用道具 举报

14

主题

47

帖子

33

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 08:22:42 | 显示全部楼层
谢谢李,
 
以便立即响应。块sp不是动态的。
 
再次感谢。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 04:54 , Processed in 0.432587 second(s), 68 queries .

© 2020-2025 乐筑天下

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