找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 810|回复: 11

[求助]:如何把某一范围长度的线做成一个选择集

[复制链接]
发表于 2006-3-22 20:51:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本人对选择集方面了解很少,比如:(ssget '((0 . "Arc,Circle,Ellipse,*Line"))) 或 (ssget "X" (list (cons 0 "line") (cons 8 txt))),其中“0”和“8”是什么?有没有这方面的学习材料?
请问:把小于20mm的线;大于20mm小于100mm的线;大于100mm小于300mm的线分别做成选择集,lisp该怎么做?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-3-22 21:28:47 | 显示全部楼层
未经测试:
  1. [FONT=courier new](defun c:test ()
  2.   (setq        ss         (ssget '((0 . "CIRCLE,ELLIPSE,*LINE,ARC")))
  3.         s20         (ssadd)
  4.         s20-100         (ssadd)
  5.         s100-300 (ssadd)
  6.         i         -1
  7.   )
  8.   (while (setq s1 (ssname ss (setq i (1+ i))))
  9.     (setq
  10.       leng (vlax-curve-getDistAtParam s1 (vlax-curve-getEndParam s1))
  11.     )
  12.     (cond ((<= leng 20) (setq s20 (ssadd s1 s20)))
  13.           ((and (> leng 20) (<= leng 100))
  14.            (setq s20-100 (ssadd s1 s20-100))
  15.           )
  16.           ((and (> leng 100) (<= leng 300))
  17.            (setq s100-300 (ssadd s1 s100-300))
  18.           )
  19.           (t (princ))
  20.     )
  21.   )
  22.   (princ "\n选择集名称:!s20 !s20-100 !s100-300")
  23.   (princ)
  24. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-3-22 21:41:16 | 显示全部楼层
这个我也不清楚,我帮你问问别人.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-22 22:06:36 | 显示全部楼层
谢谢xyp1946:
    问题:1。s20集没有选择完;   2。其它集没有选到

能不能提供学习资料?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-3-22 22:22:04 | 显示全部楼层
最初由 ewenhui 发布
[B]谢谢xyp1946:
    问题:1。s20集没有选择完;   2。其它集没有选到

能不能提供学习资料? [/B]

1、首先要框选一个范围。
2、如果不存在要求的实体,当然选择集就不存在。

完整测试版:
  1. [FONT=courier new]
  2. (load "xyp_lib.vlx")                        ;版本 V.20060314
  3. ;|下载和加载通用函数(可在签名栏直接下载后放到搜索路径下)
  4. 利用以下任何一种方式(首选第一种)即可加载和运行通用函数内的所有子程序:
  5. ★1·在acad.lsp中增加(load"xyp_lib.vlx")
  6. ■2·在每个程序内增加(load"xyp_lib.vlx")
  7. ■3·在command下,输入(load"xyp_lib.vlx")
  8. ■4·在菜单.mnl中增加(load"xyp_lib.vlx")
  9. ■5·将xyp_lib.vlx文件直接拽到cad屏幕
  10. [COLOR=red] ★通用函数下载地址:[/COLOR]
  11. [url]http://www.xdcad.net/forum/attachment.php?s=&postid=1606661[/url]
  12. |;

  13. (defun c:test ()
  14.   (cmdla0)
  15.   (setq        ss         (ssget "X" '((0 . "CIRCLE,ELLIPSE,*LINE,ARC")))
  16.         s20         (ssadd)
  17.         s20-100         (ssadd)
  18.         s100-300 (ssadd)
  19.         i         -1
  20.   )
  21.   (while (setq s1 (ssname ss (setq i (1+ i))))
  22.     (setq
  23.       leng (vlax-curve-getDistAtParam s1 (vlax-curve-getEndParam s1))
  24.     )
  25.     (cond ((<= leng 20) (setq s20 (ssadd s1 s20)))
  26.           ((and (> leng 20) (<= leng 100))
  27.            (setq s20-100 (ssadd s1 s20-100))
  28.           )
  29.           ((and (> leng 100) (<= leng 300))
  30.            (setq s100-300 (ssadd s1 s100-300))
  31.           )
  32.           (t (princ))
  33.     )
  34.   )
  35.   (princ
  36.     "\n选择集名称:!s20 !s20-100 !s100-300, 任意键逐个显示选择集: "
  37.   )
  38.   (xyp-Pause)
  39.   (princ "\n!s20")
  40.   (xyp-Redraw3 s20)
  41.   (xyp-Pause)
  42.   (command "regen")
  43.   (princ "\n!s20-100")
  44.   (xyp-Redraw3 s20-100)
  45.   (xyp-Pause)
  46.   (command "regen")
  47.   (princ "\n!s100-300")
  48.   (xyp-Redraw3 s100-300)
  49.   (cmdla1)
  50. )
  51. [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-26 17:35:18 | 显示全部楼层
请问: (setq ss  (ssget "X" '((0 . "CIRCLE,ELLIPSE,*LINE,ARC")))) ,能否选中由命令:“_rectang”所绘出的线?下面这个程序就失败了:
(defun c:eee( / ee pa pb pc)
(cmdla0)
(setq pa (getpoint "\n基点:"))
(setq pb (polar pa 0 60))
(setq pc (polar pb (* pi 1.5) 60))
(command "pline" pa pb pc "")
(command "rectang" "f" 0 pa "@30,20")
(command "rectang" "f" 2 pb "@20,30")

(setq ee (ssget "X" (list (cons 0 "arc,*line") (cons 8 "0"))))
(command "explode" ee)
(cmdla1)
)
请教错误出在哪里?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-3-26 19:19:07 | 显示全部楼层
要保证在0层操作才能选到:
  1. [FONT=courier new]
  2. (defun c:test (/ ee pa pb pc)
  3.   (cmdla0)
  4.   (setvar"osmode"0)
  5.   (mkla"0"7)
  6.   (setq        pa (getpoint "\n基点:")
  7.         pb (polar pa 0 60)
  8.         pc (polar pb (* pi 1.5) 60)
  9.   )
  10.   (command "pline" pa pb pc "")
  11.   (command "rectang" "f" 0 pa "@30,20")
  12.   (command "rectang" "f" 2 pb "@20,30")
  13.   (setq ee (ssget "X" (list (cons 0 "arc,*line") (cons 8 "0"))))
  14.   (command "explode" ee "")
  15.   (cmdla1)
  16. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-27 17:45:57 | 显示全部楼层
*-*3 版主,还是有问题。程序共画了三个实体,却只炸开了第一个?请帮忙
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-3-27 19:48:14 | 显示全部楼层
关于DXF代码,如0,62,8等问题请到Vlisp软件环境下的帮助->Dxf reference->ENTITIES Section下即可找到。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-3-28 19:26:31 | 显示全部楼层
不清楚,也遇到了此类问题,那位大虾解解啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-3-28 21:32:37 | 显示全部楼层
最初由 ewenhui 发布
[B]*-*3 版主,还是有问题。程序共画了三个实体,却只炸开了第一个?请帮忙 [/B]


(setvar “qaflags” 1)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-30 20:41:44 | 显示全部楼层
多谢11楼楼主
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-21 15:04 , Processed in 0.184131 second(s), 54 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表