本帖最后由 liuhe 于 2023-4-18 13:31 编辑
- (defun c:lts ( / lts:processed idx scl sel )
- (initget 6)
- (if (setq scl (getreal "\n 请输入线性型比例"))
- (if (setq sel (ssget "_:L"))
- (repeat (setq idx (sslength sel))
- (lts:obj (vlax-ename->vla-object (ssname sel (setq idx (1- idx)))) scl)
- )
- )
- )
- (vla-regen lts:acdoc acallviewports)
- (princ)
- )
- (defun lts:blk ( obj scl / bln )
- (if (not (member (setq bln (vla-get-name obj)) lts:processed))
- (progn
- (vlax-map-collection (vla-item lts:acblk bln) '(lambda ( obj ) (lts:obj obj scl)))
- (setq lts:processed (cons bln lts:processed))
- )
- )
- )
- (defun lts:obj ( obj scl )
- (if (and (vlax-write-enabled-p obj) (vlax-property-available-p obj 'linetypescale t)(= "DASHED"(vla-GEt-linetype obj )));;;;只更改"DASHED"的
- (vla-put-linetypescale obj scl)
- )
- (if (= "AcDbBlockReference" (vla-get-objectname obj))
- (lts:blk obj scl)
- )
- )
- (setq lts:acdoc (vla-get-activedocument (vlax-get-acad-object))
- lts:acblk (vla-get-blocks lts:acdoc)
- )
- (vl-load-com) (princ)
- ;;;;代码来至于LeeMac
关于 entmod 函数所作的修改有一些限制:
不能改变一个图元的类型和句柄。如果一定要这样做,只能先调用 entdel 函数删除它,然后调用 command 或 entmake 函数创建新图元。
entmod 函数不能修改内部域,如 SEQEND 图元的 -2 组中的图元名,如果试图作这样的修改,将会被系统忽略。
不能使用 entmod 函数修改视口图元。
可以将图元的空间可见性改为 0 或 1(视口对象除外)。如果用 entmod 函数修改了块定义中的图元,该修改会影响图形中该块的所有实例。
在用 entmod 函数修改顶点图元前,应先读出或写入多段线的头部。如果最近处理的多段线图元不是该顶点所在的多段线,可能会丢失宽度信息(40 和 41 组)。
警告! 可以用 entmod 函数修改块定义中的图元,但这样做可能会生成引用自身的块,导致 AutoCAD 系统崩溃。
(vla-Update lineObj)
|