这两个区块之间的差异是什么?
嗨,所有的<br>我有两个同名的区块和所有属性<br>但是其中一个被镜像了<br>为什么?如何解决这个问题?**** Hidden Message ***** 首先要回答的一个问题是,你是如何达到这种情况的? 镜像中不正确的文本是MIRRTEXT设置为1的结果。 当您列出两个块时,您会注意到相对于UCS的挤压方向不同。这些块不在同一个UCS上。
Z=-1意味着您从后面看那个块。
您可以使用ALIGN命令修复此问题。
您需要3个点:
-弧的末端>弧的另一端
-角1>角1的对面
-其他角>其他角的对面 事实上,这个文件是我从我们在另一个国家的分支机构收到的。他们犯了这样的致命错误,并说我们在AutoCAD中不专业,和你一样,哈桑请修复错误。 感谢您的解决方案,但是当运行lisp时,块会移动到另一个位置 这是一个非常好的方法,但是这3个文件中有成千上万的块存在这个错误。 这是一个很好的方法,但这是3个文件,其中包含了大量的块,并存在此错误
这似乎适用于您的示例绘图:
(defun c:foo (/ i)
;; No locked layer check
(vlax-for a (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))
(vlax-for b a
(if (and (= "AcDbBlockReference" (vla-get-objectname b))
(= "C1-T1" (vla-get-name b))
(setq i (vlax-get b 'normal))
(minusp (last i))
)
(progn (vlax-put b 'normal (list (car i) (cadr i) (abs (caddr i))))
(vla-put-xscalefactor b (- (vla-get-xscalefactor b)))
)
)
)
)
(command "_.attsync" "_Name" "C1-T1")
(princ)
)
(vl-load-com) Thnaks Ron
我以另一种方式开发,从块中获取属性,然后插入另一个具有相同属性的块,但是遇到了一个bug,有些块需要旋转,而有些块不需要
我尝试理解如何旋转块,例如通过按
put不能
所以您可以在这一步帮助我吗代码1] 如果您要执行其中的许多操作,为什么要手动选择每个操作?试试下面的代码..尽管您还必须考虑当前属性值。
(defun c:bmi (/ b doc i l n o p r spc x y z)
(vl-load-com)
(setq doc (vla-get-activedocument (vlax-get-acad-object))
spc (if (zerop (vla-get-activespace doc))
(if (= (vla-get-mspace doc) :vlax-true)
(vla-get-modelspace doc)
(vla-get-paperspace doc)
)
(vla-get-modelspace doc)
)
)
(while (and (setq o (car (entsel)))
(setq o (vlax-ename->vla-object o))
(setq i (vlax-get o 'normal))
(> 0 (nth 2 i))
)
(progn (setq p (vlax-get o 'insertionpoint))
(setq l (vlax-get o 'layer))
(setq r (vlax-get o 'rotation))
(setq x (- (vlax-get o 'xscalefactor)))
(setq y (vlax-get o 'yscalefactor))
(setq z (vlax-get o 'zscalefactor))
(setq n (vlax-get-property
o
(if (vlax-property-available-p o 'effectivename)
'effectivename
'name
)
)
)
(vl-catch-all-error-p
(setq
b (vl-catch-all-apply (function vla-insertblock) (list spc (vlax-3d-point p) n x y z r))
)
)
(vlax-put b 'layer l)
(command "_.attsync" "_Name" n)
(vla-delete o)
)
)
(princ)
)
页:
[1]
2