找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 730|回复: 11

[求助] [求助]:选择集!!!!

[复制链接]
发表于 2005-5-7 11:19:05 | 显示全部楼层 |阅读模式

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

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

×
有一个大的选择集(比如为一大圆,选择集用y1表示),大圆里有一小圆(选择集为y2)能否用lisp语言命令实现大圆减去小圆后的剩余选择集表示y3(y3=y1-y2)?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-5-7 12:04:33 | 显示全部楼层
[php](command "select" y1 "r" y2 "")
(setq y3 (ssget "p"))[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-7 14:07:28 | 显示全部楼层
按2楼所说:写了一小程序,不过实现不了该功能啊!
(defun y()
    (command  "circle"  (list 500 500) 200)
    (setq  y1 (entlast))
    (command  "circle"  (list 500 500) 100)
    (setq  y2 (entlast))
    (command "select" y1 "r" y2 "")
    (setq y3 (ssget "p"))
  (command "hatch" "u" 45 5 "n" y3 "")
)
我的目的是对大圆y1减去小圆 后的圆环画剖线,但是结果是对整个大圆画剖线,怎样才能实现对圆环画剖线呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-5-7 15:24:11 | 显示全部楼层
真佩服你们!
我怎么就不会呢?
甚至还看不懂你们在讲什么!
头痛!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2005-5-7 16:44:23 | 显示全部楼层
最初由 handonglong 发布
[B]按2楼所说:写了一小程序,不过实现不了该功能啊!
(defun y()
    (command  "circle"  (list 500 500) 200)
    (setq  y1 (entlast))
    (command  "circle"  (list 500 500) 100)
    (setq  y2 (entlast)... [/B]

概念有错误,对hatch命令可以参考帮助文件。
[php]
(defun c:test ()
  (command "circle" (list 500 500) 200)
  (setq y1 (entlast))
  (command "circle" (list 500 500) 100)
  (setq y2 (entlast))
  (setvar"hpname""u,n")
  (command "hatch" "" 45 5 "n" y1 y2 "")
  (princ)
)[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-10 16:57:58 | 显示全部楼层
如果是大圆(y1)减去两小圆(y2 ,y2)后画剖线又当如何?
(defun c:test ()
  (command "circle" (list 500 500) 400)
  (setq y1 (entlast))
  (command "circle" (list 400 400) 100)
  (setq y2 (entlast))
  (command "circle" (list 600 600) 100)
  (setq y3 (entlast))
;;;;下面程序该如何写呢?
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-5-10 20:15:12 | 显示全部楼层
[php]
(defun c:test1 ()
  (command "circle" (list 500 500) 200)
  (setq y1 (entlast))
  (command "circle" (list 500 500) 100)
  (setq y2 (entlast))
  (command "circle" (list 600 600) 100)
  (setq y3 (entlast))
  (setvar"hpname""u,n")
  (command "hatch" "" 45 5 "n" y1 y2 y3"")
  (princ)
)[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-5-10 20:21:05 | 显示全部楼层
[php]
(defun c:test2 ()
  (command "circle" (list 500 500) 200)
  (setq y1 (entlast))
  (command "circle" (list 500 500) 100)
  (setq y2 (entlast))
  (command "circle" (list 600 600) 100)
  (setq y3 (entlast))
  (setvar"hpname""u,i")
  (command "hatch" "" 45 5 "n" y1 y2 y3"")
  (princ)
)[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-15 10:50:19 | 显示全部楼层
现我要求再大正方形中对一部分画剖线,程序如下:
(defun c:test ()
;;;;画正方形
(command "layer" "m" "0 ""c" white" "0" "l" "continuous" "0" "")
  (command "line" (list 100 100) (list 100 500) "")
  (setq y1 (entlast))    ;;;选择一边,后面画剖线需用到
command "line" (list 100 500) (list 500 500) "")
command "line" (list 500 500) (list 100 500) "")
command "line" (list 100 500) (list 100 100) "")
(setq ss0 (ssget "x" (list (cons 8 "0"))));;;;;;;;;选择0层
(command "layer" "m" "1 ""c" white" "1" "l" "continuous" "1" "")
command "line" (list 100 100) (list 200 200) "")
command "line" (list 200 200) (list 400 200) "")
command "line" (list 400 200) (list 400 400) "")
command "line" (list 400 400) (list 200 400) "")
command "line" (list 200 400) (list 100 500) "")
setq ss1 (ssget "x" (list (cons 8 "1"))));;;;;;;;;选择1层
;;;;
如何选择1层ss1和0层上的一直线y1组成ss,然后将正方形ss0减去ss后画剖线,这段程序请帮完成!
;;;;;;;
  (setvar"hpname""u,n")
  (command "hatch" "" 45 5 "n" ss0 ss"")
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-5-15 12:16:56 | 显示全部楼层
最初由 handonglong 发布
[B]现我要求再大正方形中对一部分画剖线,程序如下:
(defun c:test ()
;;;;画正方形
(command "layer" "m" "0 ""c" white" "0" "l" "continuous" "0" "")
  (command "line" (list 100 100) (list 100 500) "... [/B]

上面程序错误太多!
对hatch命令的概念也不清楚。
建议用Vlsual lisp编辑器。
尽量不要用(ssget "x"…… 这种方式。
[php]
(defun c:test ()
  (setvar "cmdecho" 0)
  (setvar "plinewid" 0)
                                        ;(cmdla0)
                                        ;0层外框(正方形)
  (command "layer" "m" "0" "c" "2" "0" "l" "continuous"        "0" "")
                                        ;(mkla "外框" 2)
  (command "RECTANG" (list 100 100) (list 500 500))
  (setq y1 (entlast))
                                        ;1层内框
  (command "layer" "m" "1" "c" "1" "1" "l" "continuous"        "1" "")
                                        ;(mkla "内框" 1)
  (command "pline"
           (list 100 100)
           (list 200 200)
           (list 400 200)
           (list 400 400)
           (list 200 400)
           (list 100 500)
           "c"
  )
  (setq y2 (entlast))
  (setvar "hpname" "u,n")
                                        ;(mkla "填充" 3)
                                        ;3层填充
  (command "layer" "m" "3" "c" "3" "3" "l" "continuous"        "3" "")
  (command "ucs" "n" (list 100 100))
  (command "hatch" "" 45 10 "n" y1 y2 "")
  (command "ucs" "")
                                        ;(cmdla1)
  (princ)
)[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-28 05:32 , Processed in 0.200289 second(s), 55 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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