找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 985|回复: 12

[求助] [求助]:怎么列出冻结层

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

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

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

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

使用道具 举报

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

使用道具 举报

发表于 2006-11-15 02:41:36 | 显示全部楼层
[php]
列出冻结层
(defun c:test (/ ll)
  (vlax-for each
    (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
    (if (= (vla-get-freeze each) :vlax-true)
      (setq ll (append ll (list (vla-get-name each))))
    )
  )
  ll
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2006-11-15 13:00:00 | 显示全部楼层
[PHP]
更简单呀, 看来6楼没有好好看程序。去掉条件语句即可。
(defun c:test (/ ll)
  (vlax-for each
    (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
    (setq ll (append ll (list (vla-get-name each))))  
  )
  ll
)
[/PHP]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-11-15 16:50:48 | 显示全部楼层
谢谢楼上,其实我对VL不太熟悉,我想再请教个问题:
1 如何用VL得到块中名称为“BB”的属性块实体
2 如何用VL提取块中名称为“BB”的属性块中标签为“GG”的属性值
3 如何用VL修改块中名称为“BB”的属性块中标签为“GG”的属性值
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2006-11-16 04:17:53 | 显示全部楼层
[php]

1.提取名称为“BB”的属性块
  (setq blk (ssget "x" '((0 . "INSERT")(2 . "BB"))))
2. 提取名称为“BB”中标签为“GG”的属性值
   (setq att (dxf 1 (last (assoc "GG" (getattributes (ssname blk 0)))))
3. 修改名称为“BB”中标签为“GG”的属性值:
(setq attobj (vlax-ename->vla-object (last (assoc "GG" (getattributes (ssname blk 0))))))
  (vla-put-textstring attobj "newvalue")

*相关的子程序:
(defun getattributes (ent / lst)
  (if (safearray-value
        (setq lst (vlax-variant-value (vla-getattributes (vlax-ename->vla-object ent)))))
    (mapcar '(lambda (x) (list (vla-get-tagstring x)(vla-get-textstring x)
                               (vlax-vla-object->ename x)))(vlax-safearray->list lst))
  )
)
;
(defun dxf (code ename)(cdr (assoc code (entget ename))))
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-11-16 09:41:03 | 显示全部楼层
非常感谢楼上,佩服佩服。关键是那个相关函数太厉害了,比LISP的ENT等函数简单,所以提取属性值可以直接这样
(setq att (nth 1(assoc "GG" (getattributes (ssname blk 0)))))
另外我想请教更深一点的问题,还是上面的三个问题,只是不是用在当前图纸,而是用在远程图纸上。解释一下,打开AutoCAD,不用打开要操作的图纸,只是执行程序就可以将另一张图纸中的属性块BB中标签GG的值操作,我知道用VLA-OPEN打开,用VLA-CLOSE关闭,可是其余的呢?请楼上费心了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2006-11-16 15:32:27 | 显示全部楼层
根据上面内容可以看出,
用(vlax-for each
    (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))
    (setq ll (append ll (list (vla-get-name each))))   
可以列出所有块的名称
用(safearray-value
    (setq lst (vlax-variant-value (vla-getattributes (vlax-ename->vla-object ent)))))
    (mapcar '(lambda (x) (list (vla-get-tagstring x)(vla-get-textstring x)
                   (vlax-vla-object->ename x)))(vlax-safearray->list lst))
可以列出所有某个块的标签和属性
麻烦10楼将这两个程序合并以下,列出所有块的块名,标签,属性值的列表,能分清层次最佳,谢了

怎么不理我呀,我在好多地方看到你,帮帮我。如果你没空合并这个程序,那么请问上面的each怎样才能作为vla-getattributes的参数?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 02:50 , Processed in 0.202544 second(s), 55 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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