jan_ek 发表于 2022-7-6 08:40:09

这是关于图片中所示的确切点,或者不是“13,14”。我还有一个问题。是否可以读取指示尺寸的刻度?

MSasu 发表于 2022-7-6 08:44:10

@pBe:恐怕不行,只有当标签在中间,居中在垂直方向时才是这样。如果标签与其中一条尺寸界线对齐和/或位于尺寸线上方,或者用户只是将其移动到完全任意的位置,情况会如何?
 
当做
米尔恰

MSasu 发表于 2022-7-6 08:48:06

尺寸特征由DIMSCALE系统变量控制。如果是关于线性尺寸的值,请检查DIMLFAC。
 
当做
米尔恰

pBe 发表于 2022-7-6 08:51:21

(defun c:pointd(/ _dxf _list ss ent)
   (setq _dxf (lambda (dx en) (cdr (assoc dx (entget en)))))
   (setq _list (lambda (p1 p2)
                     (polar p1
                              (angle p1 p2)
                              (* (distance p1 p2) 2))))
   (setq ss (ssget '((0 . "DIMENSION"))))
   (repeat (sslength ss)
         (setq ent (ssname ss 0))
         (print (list (_dxf 10 ent)
                        (_list (_dxf 10 ent) (_dxf 11 ent)))
                  )
         )
   (princ)
   )

MSasu 发表于 2022-7-6 08:54:23

很好的方法,但请检查12号帖子。
 
当做
米尔恰

pBe 发表于 2022-7-6 08:54:56

 
哦,我没看到那个帖子。。。我想你是对的。。随便。我明天再试一次,GTG
干杯

jan_ek 发表于 2022-7-6 09:01:14

我不理解这个代码是如何工作的。在这里,我结合了“sincos tan cot”,这里是一个很好的和干净的。
但对我来说,这段代码工作不正常。第一个点显示正常,但第二个点远离尺寸

MSasu 发表于 2022-7-6 09:02:31

pBe发布的解决方案适用于DIMTAD=0和DIMJUST=0。
 
当做
米尔恰

pBe 发表于 2022-7-6 09:05:41

 
当我坐公共汽车的时候。我一直在想这个帖子。。我快疯了。所以我一回到家就写了这个
 
(defun c:pointd(/ _dxfss en ent pts)
   (setq _dxf (lambda (dx en)
                      (cdr (assoc dx
                                  (if (listp en)
                                        en
                                        (entget en))))))
   (if(setq ss (ssget "_:S:E" '((0 . "DIMENSION"))))
          (progn
                  (setq en (ssname ss 0))
                  (setq ent (tblobjname "BLOCK" (_dxf 2 en)))
                  (repeat 3 (setq ent (entnext ent)))
                  (setq pts (list (_dxf 10 (setq ln (entget ent)))
                        (_dxf 11 ln)))
                  )
            ) pts
         )
 
. 此外,我还使用了与张贴的图片相同的箭头结构标记,这使得代码更容易编写
 
干杯Mircea。。。去睡觉

marko_ribar 发表于 2022-7-6 09:07:55

但是你的第一个代码还可以。。。只涉及未命中距离(\u dxf 42 ent)以及(\u dxf 13 ent)和(\u dxf 14 ent)。。。
 

(defun c:pointd(/ _dxf _list ss ent li)
   (setq _dxf (lambda (dx en) (cdr (assoc dx (entget en)))))
   (setq _list (lambda (p1 p2 p3) (polar p1 (angle p2 p3) (_dxf 42 ent))))
   (setq ss (ssget "_+.:E:S" '((0 . "DIMENSION"))))
   (if (equal (assoc 100 (reverse (entget (setq ent (ssname ss 0))))) (cons 100 "AcDbAlignedDimension"))
         (progn
         (setq li (entmakex (list '(0 . "LINE") (cons 10 (_dxf 10 ent)) (cons 11 (_list (_dxf 10 ent) (_dxf 14 ent) (_dxf 13 ent))) '(62 . 1))))
         (print (list (_dxf 10 li) (_dxf 11 li)))
         (entdel li)
         )
         (prompt "\nWrong type of dimension picked - you must pick Aligned dimension")
   )
   (princ)
)M.R。
页: 1 [2]
查看完整版本: 尺寸标注点