(setq?@iName?(cdr(assoc?-2(ent get(CAR(ent sel " \ n選擇圖形上的塊:"))))
;;;例如,返回值是“myBlock”
然後查詢塊中具有相同組碼的信息:
(setq?@bEnt?(tblobjname?“屏蔽”?@iName))
;;;因此,獲得了對應於insert的塊圖元名稱。
然後使用entget獲取@bEnt group code -2中包含的原語。
(setq?@孩子?(cdr(assoc?-2(entget?@bEnt))))
;;;此時,@child是插入中第壹個原語的名稱。繼續使用entget獲取更多信息:
(entget?@孩子)
;;;如果您想獲得由多個圖形組成的鑲件,您想獲得第二個或第三個或更多的實體:
;;;第二個原語的名稱:(entnext?@孩子)
;;;第三個原語原語名:(entnext?(entnext?@child))
;;;第四個原語原語名:(entnext(entnext?(entnext?@child)))
;;;……
;;;根據這個規則,我們可以寫壹個簡單的函數來得到固定圖元的圖元名。
(德潤?GETOBJ(#num?/?@@gtEt)
(setq?@@gtEt?“@ child”);定義壹個基本字符串。
(如果?(& gt=?#num?1)(修復?#num)(退出));錯誤處理部分,如果# num
(重復?#num?;循環次數“整數部分”次數
(setq?@@gtEt?(strcat?”(entnext)?@@gtEt?")"));在字符串@@gtEt前添加“(entnext)”,然後“)”。
)
(eval?(閱讀?@ @ gtEt));用read將@@gtEt轉換成表,用eval執行表。
)
;;;於是,(GETOBJ?10)可以得到@child之後第10個圖元的圖元名。如果您想查看詳細信息:
(entget(GETOBJ?10))
;;;====================================================================================
;;;總結整個代碼:
(德潤?GETOBJ(#num?/?@@gtEt)
(setq?@@gtEt?“@孩子”)
(重復?#數量
(setq?@@gtEt?(strcat?”(entnext)?@@gtEt?")"))
)
(eval?(閱讀?@@gtEt))
)
(德潤?c:INSOBJ(/?@num?@iName?@bEnt?)
(setq?@iName?(cdr(assoc?-2(ent get(CAR(ent sel " \ n選擇圖形上的塊:"))))
(setq?@bEnt?(tblobjname?“屏蔽”?@iName))
(setq?@孩子?(cdr(assoc?-2(entget?@bEnt))))
(setq?@num?(getint?" \ n輸入獲得的元素序列號:"))
(如果?(& lt?@num?0)
(程序
(princ?"序列號必須不小於0。")
(退出)
)
)
(如果?(=?@num?0)(entget?@child))
(如果?(& gt?@num?0)(entget(GETOBJ?@num)))
(princ)
)
;;;以上,呼叫結束後,CAD可以進入INSOBJ。