乐筑天下

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

[编程交流] 按线型过滤的选择

[复制链接]

29

主题

84

帖子

55

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
145
发表于 2022-7-6 07:59:16 | 显示全部楼层 |阅读模式
大家好§,
请帮我纠正这个Lisp程序。
(定义c:测试(/层名称)
;; 按线型在特定图层上选择对象的函数过滤器
(setq ent(car(entsel“\n选择对象以获取其层名称:”));
 
(setq layername(cdr(assoc 8(entget ent)))
(setq layerinf(tblsearch“LAYER”l_名称))
(setq layerltype(cdr(assoc 6 LAYERNF)))
 
(setq lay(列表(cons 0“*线”)(cons 8 layername)(cons 6 layerltype));;进行选择,然后输入并高亮显示OBJEST
(普林斯)
)
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:04:56 | 显示全部楼层
你想用它实现什么?选择一个项目,获取其图层,然后从该图层中选择其线型直接关联的所有直线/多段线?
 
同时,请在摘录中添加代码标签。
回复

使用道具 举报

29

主题

84

帖子

55

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
145
发表于 2022-7-6 08:12:29 | 显示全部楼层
我想在一个按线型过滤的图层上选择对象。
某些对象由具有“连续”线型的线绘制。而不是以“虚线”为例
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:17:11 | 显示全部楼层
我对您的代码做了一些更正:
  1. (defun c:TEST ( / ent layername layerinf linetype lay index  )
  2. ;; FUNCTION FILTER SELECTION OF OBJECT ON SPECIFIC LAYER BY LINE TYPE
  3. (if (setq ent (car (entsel "\nSelect object to get its layer name : ")))
  4. (progn
  5.   (setq layername (cdr (assoc 8 (entget ent))))
  6.   (setq layerinf (tblsearch "LAYER" layername))
  7.   (setq linetype (cdr (assoc 6 layerinf)))
  8.   ;; MAKE THE SELECTION SELECTION THEN ENTER AND OBJEST HIGHLIGHTED
  9.   (if (setq lay (ssget "_X" (list '(0 . "*LINE") (cons 8 layername) (cons 6 linetype))))
  10.    (progn
  11.     (setq index 0)
  12.     (repeat (sslength lay)
  13.      (redraw (cdr (assoc -1 (entget (ssname lay index))))  3)
  14.      (setq index (1+ index))
  15.     )
  16.    )
  17.   )
  18. )
  19. )
  20. (princ)
  21. )
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:19:52 | 显示全部楼层
真实、简单、高效!尤其是当用户打算访问其例程之外的选择集时。我总是忘记这个功能,也许是时候把它贴在我的显示器上了。。。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:29:07 | 显示全部楼层
@MSasu,
 
考虑:
 
  1. (defun c:test ( / en la )
  2.    (if (setq en (car (entsel)))
  3.        (progn
  4.            (setq en (entget en)
  5.                  la (tblsearch "LAYER" (cdr (assoc 8 en)))
  6.            )
  7.            (sssetfirst nil (ssget "_X" (list '(0 . "*LINE") (assoc 8 en) (assoc 6 la))))
  8.        )
  9.    )
  10.    (princ)
  11. )
回复

使用道具 举报

29

主题

84

帖子

55

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
145
发表于 2022-7-6 08:30:36 | 显示全部楼层
谢谢你没有工作。
选择特定图层上按线型过滤的对象,并使其高亮显示,以允许我进行一些修改。
回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-7-6 08:36:38 | 显示全部楼层
fathihvac,
 
请编辑您的帖子,包括代码标签!
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:42:09 | 显示全部楼层
你试过李提出的那个吗?
或者考虑到李的观察,可能会改变我所改变的。
回复

使用道具 举报

11

主题

46

帖子

36

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-6 08:44:59 | 显示全部楼层
  1. (defun [color="red"]namedfunction[/color]( / ss_lay cnt i nm ent lt nlt)
  2. (setq ss_lay (ssget "X" (list (cons 0 "LINE")(cons 8 "[color="red"]layer name[/color]"))))
  3. (if ss_lay
  4.   (progn
  5.      (setq Cnt (sslength ss_lay))
  6. (setq i 0)
  7. (repeat Cnt
  8.    (setq NM (ssname ss_lay i))
  9.    (setq ENT (entget NM))
  10.           (setq LT (cdr (assoc 6 ent)) NLT "Continuous")
  11.           (while (< i cnt)
  12.              (if (= LT NLT)
  13.              ([color="red"]what ever you want to do with the lines[/color])
  14.              );if
  15.           );while
  16.       (setq i (+ i 1))
  17.       );repeat
  18.   );progn
  19. );if
  20. );defun
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-9 21:15 , Processed in 0.623666 second(s), 72 queries .

© 2020-2025 乐筑天下

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