找回密码 注册 QQ登录
一站式解决方案

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 15465|回复: 5
打印 上一主题 下一主题

怎样提取group的名字?

[复制链接]
跳转到指定楼层
1
发表于 2004-3-11 16:49:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

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

x
在Autolsp中,怎样实现对所选择的group,提取它的名称给变量?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
2
发表于 2004-3-12 09:11:06 | 只看该作者
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"
3
发表于 2004-3-12 14:21:48 | 只看该作者
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按钮一样.
  
帮我看看有什么办法没.
4
发表于 2004-3-12 17:26:59 | 只看该作者
這支副程式我曾經寫過, 公佈步驟如下, 希望可以解決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"
5
发表于 2004-3-13 13:25:37 | 只看该作者
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从哪里来的?
6
发表于 2004-3-13 16:34:33 | 只看该作者
变量a2从哪里来的?
  
請看第二樓, 事先我在圖上作兩個group - "alan" 及 "alan1", 接著用dictsearch函數, 掠取 group的資料, 設為變量為a2.
  
感謝版主加分, 在ProE版已接受您許多的教誨.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2025-1-24 19:16 , Processed in 0.031388 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2025 www.iCAx.org

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