明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3162|回复: 10

[LISP]如何通过点找出对象所在的图层

[复制链接]
发表于 2003-11-10 12:57:00 | 显示全部楼层 |阅读模式
如何通过点找出对象所在的图层 我的意思是不选择圆 只得到圆的圆心 怎么知道这个远在哪个图层上 这里圆也有可能是个块 我的方法是:
(defun c:test(/ ofe ents lyr )
(setq ofe (getvar "clayer"))
(setq p1 (getpoint "\npick point:"))
(if (null p1) (quit))
(setq ents (ssget "x" (list (cons 0 "CIRCLE,INSERT")(cons 10 p1))))
  (if (/= ents nil)
    (progn
  (setq lyr (car (assoc 8 (entget (ssname ents 0)))))
  (setvar "clayer" lyr)
    )
    (setvar "clayer" ofe)
  )
(prin1)
)
不知道各位有没有更好的方法
发表于 2003-11-10 13:02:00 | 显示全部楼层
你想用點選的方式來換圖層不如用選擇圖素的方式來換圖層還好.呵呵.
发表于 2003-11-10 13:02:00 | 显示全部楼层
如果是INSERT就麻烦点,
你的OFE有什么用?如果没有找到需要的,就什么也不做不就行了吗?干吗要做一个多余的
(setvar "clayer" ofe)?
 楼主| 发表于 2003-11-10 13:12:00 | 显示全部楼层
受教了 我是怕 如果ents是空的话 程序会终止 我原来的那句是这样的 (setq lyr ofe)
但是在实际的工作中有时候 ents 也有可是*pline line 是不是在后面添上这两个就行了?
有没有什么更好的方法 只要得到一点就知道这个对象所在的图层?
 楼主| 发表于 2003-11-10 13:16:00 | 显示全部楼层
To BDYCAD:
  在实际工作中必须要这么做!没有办法的,我也不想这么繁的。

还有个问题要请教各位:
  已知点p1 和一条三维直线 怎么样找到p1 在这条直线上的垂足
我的意思是 :只通过 (getpoint)和(entsel) 这两次输入就能计算出 垂足
发表于 2003-11-10 13:52:00 | 显示全部楼层
呆呆发表于2003-11-10 13:12:00受教了 我是怕 如果ents是空的话 程序会终止 我原来的那句是这样的 (setq lyr ofe)
但是在实际的工作中有时候 ents 也有可是*pline line 是不是在后面添上这两个就行了?
有没有什么更好的



你的IF用得不错,我的意思是IF中只要PROGN那一段就可以了,不要那个“ELSE”了,就是说其实你(setvar "clayer" ofe)是想恢复原状,但你原来什么也没做,这句话就是多余的,没有任何必要。

你说的到一点,就想知道对象所在的图层,问题不在知道对象的图层,问题在怎样通过这一点找到你需要的对象?就是说对象和这个点有什么关系?
 楼主| 发表于 2003-11-10 14:05:00 | 显示全部楼层
to 飞哥 对我的想法就是这样 还有什么好的方法没有!
谢谢飞哥的解答!!
 楼主| 发表于 2003-11-10 14:07:00 | 显示全部楼层
飞哥 我还有个问题你帮我解释一下 在第五楼 谢谢!
发表于 2003-11-10 14:58:00 | 显示全部楼层
都回答过一次了,而且龙版主用VLISP和AUTOLISP分别都写过一个程序了,你怎么还问?
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=11754
发表于 2003-11-13 17:02:00 | 显示全部楼层
(defun C:TEST (/ P1 ENTS)
  (if
    (and (setq P1 (getpoint "\nPick point: "))
         (setq
           ENTS        (ssget "X" (list (cons 0 "CIRCLE,INSERT") (cons 10 P1)))
         )
    )
     (setvar "clayer" (cdr (assoc 8 (entget (ssname ENTS 0)))))
  )
)

;;问题点:
;;1.圆心上有不同图层的圆,应转到那个图层??
;;2."INSERT"物件DXF 10码是插入点!!(除非你的图块只有单一圆,圆心就是插入点)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-10-2 10:43 , Processed in 0.189659 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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