ziyouwzb 发表于 2024-1-24 09:37:42

entmake垂直标注文字方向和颜色不对,如何修改entmake,使之达到和command一样的效果。

(setq pt1 (getpoint))
(setq pt2 (getpoint))
(setq pt (getpoint))
(entmake (list '(0 . "DIMENSION") '(100 . "AcDbEntity") '(100 . "AcDbDimension") (cons 10 pt) '(70 . 32) '(1 . "") '(100 . "AcDbAlignedDimension")
(cons 13 pt1) (cons 14 pt2) '(50 . 1.5708) '(100 . "AcDbRotatedDimension")
)
)
(command "dimlinear" pt1 pt2 "v" pt)

llsheng_73 发表于 2024-1-24 09:37:43

ziyouwzb 发表于 2024-1-24 11:27
指定标注样式后,颜色是OK了,但是文字方向还是反的,请问有什么办法把文字方向修正过来吗?

要么交换13、14组,要么改50组+ PI试试?

wzg356 发表于 2024-1-24 10:32:15

指定标注样式

yshf 发表于 2024-1-24 11:06:10

    ; 改为ActiveX方式即可满足要求
    (if (setq pt1 (getpoint "\n 起点pt1:"))
      (if (setq pt2 (getpoint pt1 " →止点pt2:"))
          (if (setq pt (getpoint " 放置点pt:"))
                (progn
                  (if (equal (car pt1) (car pt2) 1e-3)
                        (setq angDim (* 0.5 pi)dxy '(3.0 0.0 0.0))
                        (setq angDim 0.0dxy '(0.0 3.0 0.0))
                  )
                  (setq pmid (mapcar '+ (list (car pt) (* 0.5 (+ (cadr pt1) (cadr pt2))) 0.0)
                                        dxy
                             )
                  )
                  (setq DimObj (vla-AddDimRotated
                                    (vla-get-ModelSpace
                                           (vla-get-ActiveDocument
                                                (vlax-get-acad-object)
                                           )
                                      )
                                    (vlax-3d-point pt1)
                                    (vlax-3d-point pt2)
                                    (vlax-3d-point pmid)
                                       angDim
                                 )
                  )
                  (vlax-put-property DimObj "Color" 1)
                  (command "dimlinear" pt1 pt2 "v" pt)
                )
          )
        )
    )

ziyouwzb 发表于 2024-1-24 11:27:54

wzg356 发表于 2024-1-24 10:32
指定标注样式

指定标注样式后,颜色是OK了,但是文字方向还是反的,请问有什么办法把文字方向修正过来吗?

ziyouwzb 发表于 2024-1-24 11:37:45

yshf 发表于 2024-1-24 11:06
; 改为ActiveX方式即可满足要求
    (if (setq pt1 (getpoint "\n 起点pt1:"))
      (if (setq pt ...

试了下代码,确实可以达到目的,文字方向也OK了,但我还是想知道entmake文字反向的原因,
水平标注entmake和command文字方向一样,垂直标注就不一样,查了半天资料也没搞清楚。
最好能直接修改entmake解决问题。

wzg356 发表于 2024-1-24 11:55:10

本帖最后由 wzg356 于 2024-1-24 12:00 编辑

ziyouwzb 发表于 2024-1-24 11:37
试了下代码,确实可以达到目的,文字方向也OK了,但我还是想知道entmake文字反向的原因,
水平标注entma ...(setq e(entmakex.....))
(Vlax-Put(Vlax-Ename->Vla-Object e) 'VerticalTextPosition 1))
((0 "垂向居中")(1 "垂向上方")(2 "垂向外部")(3 "垂向JIS")(4 "垂向下方"))


除非尺寸线不是水平的或尺寸界线内的文本被强制设为水平(DIMTIH = 1),否则将标注文字置于标线上方。尺寸线到最下行文字基线的距离是当前DIMGAP 值。日本工业标准方式标注文字(JIS)---一般别用,貌似会出现文件出现版本无法识别的问题

ziyouwzb 发表于 2024-1-24 12:31:21

llsheng_73 发表于 2024-1-24 11:37
要么交换13、14组,要么改50组+ PI试试?

感谢大佬,确实是50组码精度问题。
经过修改成下面代码,完美解决。
(setq bzys (strcat (getvar "dimstyle") "$0"))
(setq dxf50 (* 0.5 pi))
(setq pt1 (getpoint))
(setq pt2 (getpoint))
(setq pt (getpoint))
(entmake (list '(0 . "DIMENSION") '(100 . "AcDbEntity") '(100 . "AcDbDimension") (cons 10 pt) '(70 . 32) '(1 . "") (cons 3 bzys) '(100 . "AcDbAlignedDimension")
(cons 13 pt1) (cons 14 pt2) (cons 50 dxf50) '(100 . "AcDbRotatedDimension")
)
)
页: [1]
查看完整版本: entmake垂直标注文字方向和颜色不对,如何修改entmake,使之达到和command一样的效果。