iCAx开思网

标题: 怎样提取group的名字? [打印本页]

作者: Alan    时间: 2004-3-11 16:49
标题: 怎样提取group的名字?
在Autolsp中,怎样实现对所选择的group,提取它的名称给变量?
作者: wayne    时间: 2004-3-12 09:11
Alan兄,
為何興起學習Autolisp, 馬上問這樣有深度的題目, 以下步驟是否可以解決您的問題? 若是對的, 只要做個迴圈即可存取所有Group的名稱.
  
指令: (setq a1 (dictsearch (namedobjdict) "ACAD_GROUP"))
((-1 . <圖元名稱: 4006bc68>) (0 . "DICTIONARY") (5 . "D") (102 .  
"{ACAD_REACTORS") (330 . <圖元名稱: 4006bc60>) (102 . "}") (330 . <圖元名稱: 4006bc60>) (100 . "AcDbDictionary") (280 . 0) (281 . 1) (3 . "ALAN") (350 . <圖元名稱: 4006bd70>) (3 . "ALAN1") (350 . <圖元名稱: 4006bd90>))
  
指令: (setq a2 (member (assoc 3 a1) a1))
((3 . "ALAN") (350 . <圖元名稱: 4006bd70>) (3 . "ALAN1") (350 . <圖元名稱: 4006bd90>))
  
指令: (cdr (nth 0 a2))
"ALAN"
  
指令: (cdr (nth 2 a2))
"ALAN1"
作者: Alan    时间: 2004-3-12 14:21
wayne wrote:
Alan兄,  
  為何興起學習Autolisp, 馬上問這樣有深度的題目, 以下步驟是否可以解決您的問題? 若是對的, 只要做個迴圈即可存取所有Group的名稱.  
  
  指令: (setq a1 (dictsearch (namedobjdict) "ACAD_GROUP"))  
  ((-1 . <圖元名稱: 4006bc68>) (0 . "DICTIONARY") (5 . "D") (102 .   
  "{ACAD_REACTORS") (330 . <圖元名稱: 4006bc60>) (102 . "}") (330 . <圖元名稱: 4006bc60>) (100 . "AcDbDictionary") (280 . 0) (281 . 1) (3 . "ALAN") (350 . <圖元名稱: 4006bd70>) (3 . "ALAN1") (350 . <圖元名稱: 4006bd90>))  
  
  指令: (setq a2 (member (assoc 3 a1) a1))  
  ((3 . "ALAN") (350 . <圖元名稱: 4006bd70>) (3 . "ALAN1") (350 . <圖元名稱: 4006bd90>))  
  
  指令: (cdr (nth 0 a2))  
  "ALAN"  
  
  指令: (cdr (nth 2 a2))  
  "ALAN1"

  
谢谢!我的意思是我要通过ssget()选择一个物体,然后怎么知道这个物体所在的group的名字!然后再对这个group进行操作.就像group对话框界面中的findname按钮一样.
  
帮我看看有什么办法没.
作者: wayne    时间: 2004-3-12 17:26
這支副程式我曾經寫過, 公佈步驟如下, 希望可以解決Alan兄的問題, 也希望大家討論有更好及更簡潔的方法.
  
指令: (setq b1 (ssget))
  
選取物件: 3 找到, 1 群組
  
選取物件:
<Selection set: 4a>
  
指令: (setq b2 (ssname b1 0))
<圖元名稱: 4006bd80>
  
指令: (setq b3 (assoc 330 (entget b2)))
(330 . <圖元名稱: 4006bd90>)
  
指令: (setq b4 (cons 350 (cdr b3)))
(350 . <圖元名稱: 4006bd90>)
  
指令: (setq a3 (reverse a2))
((350 . <圖元名稱: 4006bd90>) (3 . "ALAN1") (350 . <圖元名稱: 4006bd70>) (3 . "ALAN"))
  
指令: (setq b5 (member b4 a3))
((350 . <圖元名稱: 4006bd90>) (3 . "ALAN1") (350 . <圖元名稱: 4006bd70>) (3 . "ALAN"))
  
指令: (cdadr a3)
"ALAN1"
作者: Alan    时间: 2004-3-13 13:25
wayne wrote:
這支副程式我曾經寫過, 公佈步驟如下, 希望可以解決Alan兄的問題, 也希望大家討論有更好及更簡潔的方法.  
  
  指令: (setq b1 (ssget))  
  
  選取物件: 3 找到, 1 群組  
  
  選取物件:  
  <Selection set: 4a>  
  
  指令: (setq b2 (ssname b1 0))  
  <圖元名稱: 4006bd80>  
  
  指令: (setq b3 (assoc 330 (entget b2)))  
  (330 . <圖元名稱: 4006bd90>)  
  
  指令: (setq b4 (cons 350 (cdr b3)))  
  (350 . <圖元名稱: 4006bd90>)  
  
  指令: (setq a3 (reverse a2))   
  ((350 . <圖元名稱: 4006bd90>) (3 . "ALAN1") (350 . <圖元名稱: 4006bd70>) (3 . "ALAN"))  
  
  指令: (setq b5 (member b4 a3))  
  ((350 . <圖元名稱: 4006bd90>) (3 . "ALAN1") (350 . <圖元名稱: 4006bd70>) (3 . "ALAN"))  
  
  指令: (cdadr a3)  
  "ALAN1"

  
变量a2从哪里来的?
作者: wayne    时间: 2004-3-13 16:34
变量a2从哪里来的?
  
請看第二樓, 事先我在圖上作兩個group - "alan" 及 "alan1", 接著用dictsearch函數, 掠取 group的資料, 設為變量為a2.
  
感謝版主加分, 在ProE版已接受您許多的教誨.




欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3