需要一些代码的帮助
大家好。有人能帮我处理这个代码吗?它不会将块重命名为“FT”
(while
(setq Myblk (tblnext "BLOCK" (null Myblk)))
(if (eq (cdr (assoc 2 Myblk)) "FT")
(progn
(setq entlst (entget (tblobjname "BLOCK" (cdr (assoc 2 Myblk)))))
(entmod (subst (cons 2 "CO") (assoc 2 entlst)
entlst
)
)))) (if (setq ent (tblobjname "BLOCK" "FT"))
(entmod (subst '(2 . "CO") '(2 . "FT") (entget (cdr (assoc 330 (entget ent))))))
) 谢谢李。
为什么使用代码330?我看到它是指向所有者对象的330个软指针ID/handle,我不明白它是什么意思。
谢谢XXXXX
如果不重新定义块定义(具有相同名称的所有块的所有者),则不能仅重命名单个块参照。
哇,我不知道
太酷了
不客气!
330 DXF组码始终是指向父/所有者实体的指针,在这种情况下是块记录实体(AcDbBlockTableRecord对象),它是块实体(AcDbBlockBegin对象)的父实体。AcDbBlockTableRecord对象是在Visual LISP块集合中找到的对象,应重命名该实体/对象以重命名图形中块的所有引用。
每个AutoCAD块定义都使用以下图元层次:
+-- TABLE (AcDbBlockTable)
|
+--+-- BLOCK_RECORD (AcDbBlockTableRecord)
|
+--+-- BLOCK (AcDbBlockBegin)
|
+--+-- < Block Geometry Entity >
|
+-- < Block Geometry Entity >
|
...
|
+-- < Block Geometry Entity >
|
+-- ENDBLK
干杯伙计 我做了一些研究:
阻碍
(if (setq ent (tblobjname "BLOCK" "FT"))
(entmod (subst '(2 . "CO") '(2 . "FT") (entget (cdr (assoc 330 (entget ent))))))
)
4层
“0”层不能重命名,但可以设置颜色(更改为“红色”-颜色1)
视图
空表视图(tblnext“view”T)=>零
首先创建视图“MR”
(if (setq ent (tblobjname "VIEW" "MR"))
(entmod (subst '(2 . "VR") '(2 . "MR") (entget ent)))
)L类型
“Continuous”ltype无法修改,因此您必须加载新的ltype
首先加载ltype“虚线”
(if (setq ent (tblobjname "LTYPE" "Dashed"))
(entmod (subst '(2 . "MR") '(2 . "Dashed") (entget ent)))
)样式
“标准”样式不能重命名,但可以将字体设置为它(更改为“simplex.shx”)
(if (setq ent (tblobjname "STYLE" "Standard"))
(entmod (subst '(3 . "simplex.shx") '(3 . "arial.ttf") (entget ent)))
)UCS
空表ucs(tblnext“ucs”T)=>零
首先保存ucs“MR”
尺寸样式
“标准”dimstyle无法重命名和修改
首先保存dimstyle“MR”
10V端口
空表vport(tblnext“vport”T)=>nil
首先创建vport“MR”
11appid
“ACAD”appid无法修改,因此无法使用
12M.R。 谢谢李的精彩解释
还感谢Marko提供的好例子。
页:
[1]