HasanCAD 发表于 2017-9-5 13:00:44

这两个区块之间的差异是什么?

嗨,所有的<br>我有两个同名的区块和所有属性<br>但是其中一个被镜像了<br>为什么?如何解决这个问题?
**** Hidden Message *****

Master_Shake 发表于 2017-9-5 14:15:21

首先要回答的一个问题是,你是如何达到这种情况的?

ronjonp 发表于 2017-9-5 14:19:38

镜像中不正确的文本是MIRRTEXT设置为1的结果。

Crank 发表于 2017-9-5 14:30:14

当您列出两个块时,您会注意到相对于UCS的挤压方向不同。这些块不在同一个UCS上。
Z=-1意味着您从后面看那个块。
您可以使用ALIGN命令修复此问题。
您需要3个点:
-弧的末端>弧的另一端
-角1>角1的对面
-其他角>其他角的对面

HasanCAD 发表于 2017-9-6 04:38:07

事实上,这个文件是我从我们在另一个国家的分支机构收到的。他们犯了这样的致命错误,并说我们在AutoCAD中不专业,和你一样,哈桑请修复错误。

HasanCAD 发表于 2017-9-6 04:40:06

感谢您的解决方案,但是当运行lisp时,块会移动到另一个位置

HasanCAD 发表于 2017-9-6 04:41:28

这是一个非常好的方法,但是这3个文件中有成千上万的块存在这个错误。

ronjonp 发表于 2017-9-6 11:00:30

这是一个很好的方法,但这是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)

HasanCAD 发表于 2017-9-6 11:22:07

Thnaks Ron
我以另一种方式开发,从块中获取属性,然后插入另一个具有相同属性的块,但是遇到了一个bug,有些块需要旋转,而有些块不需要
我尝试理解如何旋转块,例如通过按
put不能
所以您可以在这一步帮助我吗代码1]

ronjonp 发表于 2017-9-6 14:59:06

如果您要执行其中的许多操作,为什么要手动选择每个操作?试试下面的代码..尽管您还必须考虑当前属性值。
(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
查看完整版本: 这两个区块之间的差异是什么?