Sweety 发表于 2022-7-6 07:24:33

需要一些代码的帮助

大家好。
 
有人能帮我处理这个代码吗?它不会将块重命名为“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
      )
))))

Lee Mac 发表于 2022-7-6 07:38:14

(if (setq ent (tblobjname "BLOCK" "FT"))
   (entmod (subst '(2 . "CO") '(2 . "FT") (entget (cdr (assoc 330 (entget ent))))))
)

Sweety 发表于 2022-7-6 07:46:00

谢谢李。
 
为什么使用代码330?我看到它是指向所有者对象的330个软指针ID/handle,我不明白它是什么意思。
 
谢谢XXXXX

marko_ribar 发表于 2022-7-6 07:51:29

 
如果不重新定义块定义(具有相同名称的所有块的所有者),则不能仅重命名单个块参照。

pBe 发表于 2022-7-6 07:57:31

 
哇,我不知道
 
太酷了

Lee Mac 发表于 2022-7-6 08:08:02

 
不客气!
 
 
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

Lee Mac 发表于 2022-7-6 08:10:29

 
干杯伙计

marko_ribar 发表于 2022-7-6 08:18:45

我做了一些研究:
 
阻碍
 

(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。

Sweety 发表于 2022-7-6 08:27:35

谢谢李的精彩解释
 
还感谢Marko提供的好例子。
页: [1]
查看完整版本: 需要一些代码的帮助