找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1181|回复: 11

[LISP函数]:如何lisp实现用过滤器选择起点横坐标相同的直线

[复制链接]
发表于 2005-6-28 18:28:43 | 显示全部楼层 |阅读模式

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

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

×
如何用ssget过滤器选择起点横坐标相同的所有直线,或者选择所有直线长度等于定值的直线?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-6-28 19:17:56 | 显示全部楼层
定长直线选择集:
  1. [FONT=courier new]
  2. (load "xyp_lib")
  3. ;|加载通用函数(可在签名栏直接下载)
  4. 如果已经下载xyp_lib并放到搜索路径下可以不再下载!
  5. 利用以下任何一种方式即可加载和运行通用函数内的所有子程序:
  6. 1.在acad.lsp中增加(load"xyp_lib")
  7. 2.在每个程序内增加(load"xyp_lib")
  8. 3.在command下,输入(load"xyp_lib")
  9. 4.在菜单.mnl中增加(load"xyp_lib")
  10. 5.将xyp_lib.vlx文件直接拽到cad屏幕
  11. [COLOR=red] ★通用函数下载地址:[/COLOR][url]http://www.xdcad.net/forum/attachment.php?s=&postid=1606661[/url]|;

  12. ;;;定长直线选择集
  13. (defun c:test ()
  14.   (CMDLA0)
  15.   (setq        no1 (UREAL 7 "" "\n定线长度" no1)
  16.         ss  (ssget '((0 . "LINE")))
  17.         i   -1
  18.         ss0 (ssadd)
  19.   )
  20.   (while (setq s1 (ssname ss (setq i (1+ i))))
  21.     (if        (= (curve-leng s1) no1)
  22.       (progn
  23.         (setq ss0 (ssadd s1 ss0))
  24.         (redraw s1 3)
  25.       )
  26.     )
  27.   )
  28.   (if ss0
  29.     (princ "\选择集 !ss0")
  30.   )
  31.   (CMDLA1)
  32. )
  33. [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-6-28 19:35:13 | 显示全部楼层
横坐标相同的线选择集:
  1. [FONT=courier new];;;横坐标相同的线选择集
  2. (defun c:test ()
  3.   (CMDLA0)
  4.   (setq        s0 (uentsel 0 '("LINE""POLARLINE""LWPOLARLINE""SPLINE")  "任选一条线")
  5.         px0 (car (vlax-curve-getstartPoint (car s0)))
  6.         ss  (ssget "X" '((0 . "*LINE")))
  7.         i   -1
  8.         ss0 (ssadd)
  9.   )
  10.   (while (setq s1 (ssname ss (setq i (1+ i))))
  11.     (if        (= (car (vlax-curve-getstartPoint s1)) px0)
  12.       (progn
  13.         (setq ss0 (ssadd s1 ss0))
  14.         (redraw s1 3)
  15.       )
  16.     )
  17.   )
  18.   (if ss0
  19.     (princ "\选择集 !ss0")
  20.   )
  21.   (CMDLA1)
  22. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-6-29 08:44:30 | 显示全部楼层
下面的代码选择到所有起点X坐标为-44333.4的直线。注意精度
[php]
(ssget "x" '((0 . "LINE") (-4 . "=,*")(10 -44333.4 0.0 0.0)))
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-6-29 12:50:15 | 显示全部楼层
按wkai  的方法修改:
  1. [FONT=courier new]
  2. ;;;起点横坐标相同的线选择集
  3. (defun c:test ()
  4.   (CMDLA0)
  5.   (setq        s0  (uentsel 0 '("LINE" "POLARLINE" "LWPOLARLINE" "SPLINE" "ARC") "任选一条线")
  6.         px0 (car (vlax-curve-getstartPoint (car s0)))
  7.         ss  (ssget "X" (list '(0 . "*LINE") '(-4 . "=,*") (list 10 px0 0.0 0.0)))
  8.   )
  9.   (if ss (princ "\选择集 !SS"))
  10.   (CMDLA1)
  11. )
  12. [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-7-2 13:41:02 | 显示全部楼层
谢谢楼主!

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

使用道具 举报

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

使用道具 举报

已领礼包: 444个

财富等级: 日进斗金

发表于 2005-7-3 17:05:49 | 显示全部楼层
最初由 silen618 发布
[B]谢谢楼主!

可否用这种方法选择长度相同的直线? [/B]

直线的长度不进入DXF组码。没有办法在SSGET中过滤器中设置。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-7-5 10:32:09 | 显示全部楼层
在LISP里存在浮点运算的问题吗?在ARX里常遇到这样的问题,我都是在程序里判断一个误差范围。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 444个

财富等级: 日进斗金

发表于 2005-7-5 17:24:37 | 显示全部楼层
最初由 xunix 发布
[B]在LISP里存在浮点运算的问题吗?在ARX里常遇到这样的问题,我都是在程序里判断一个误差范围。 [/B]

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

使用道具 举报

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

使用道具 举报

已领礼包: 444个

财富等级: 日进斗金

发表于 2005-7-11 21:48:26 | 显示全部楼层
最初由 silen618 发布
[B]8楼,可是列表显示与特性里边都有显示直线长度! [/B]

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-28 08:26 , Processed in 0.178111 second(s), 54 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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