鱼与熊掌 发表于 2014-6-2 00:04:49

edata 发表于 2014-6-2 00:03 static/image/common/back.gif
当前样式不要用替代。
替代需要更改扩展数据的组码。
或者通过vla方式更改标注数据。


嗯 OK.`````````````````````````

edata 发表于 2014-6-2 00:11:08

(defun c:ts (/ p q pt en obj)
;(setvar'osmode 16384)
(setq os_bak(getvar 'cmdecho))
(setvar 'cmdecho 0)
(setq p (getpoint "\n指定起点"))
(while p
    (if        p
      (progn
        (command "pline" "_non" p)
        (while (setq q        (getpoint p "下一点")
                     pt        (mapcar '(lambda (x) (* x 0.5)) (mapcar '+ p q))
             )
          (command "_non" q)
          (setq en (entmakex
          (list '(0 . "DIMENSION")
                  '(100 . "AcDbEntity")
                  '(100 . "AcDbDimension")
                  (cons        10
                        (polar p
                             (+ (* 0.5 pi) (if (and        (< (/ Pi 2) (angle p q))
                                        (> (* 1.5 pi) (angle p q))
                                   )
                               (angle q p)
                               (angle p q)
                             ))
                             (* 6 (getvar "dimscale"))
                        )
                  )
                  '(70 . 33)
                  '(1 . "")
                  '(100 . "AcDbAlignedDimension")
                  (cons 13 (polar q
                                (+ (* 0.5 pi) (if (and        (< (/ Pi 2) (angle p q))
                                        (> (* 1.5 pi) (angle p q))
                                   )
                               (angle q p)
                               (angle p q)
                             ))
                             (* 3 (getvar "dimscale"))
                        ))
                  (cons 14 (polar p
                             (+ (* 0.5 pi) (if (and        (< (/ Pi 2) (angle p q))
                                        (> (* 1.5 pi) (angle p q))
                                   )
                               (angle q p)
                               (angle p q)
                             ))
                             (* 3 (getvar "dimscale"))
                        ))
          )
          )
                obj(vlax-ename->vla-object en))
          (vla-put-ScaleFactor obj (getvar "dimscale"))
          (entmake (list '(0 . "TEXT")
                       (cons 10 pt)
                       (cons 40 1)
                       (cons 1 (rtos (distance p q) 2 2))
                       (cons 50
                             (if (and        (< (/ Pi 2) (angle p q))
                                        (> (* 1.5 pi) (angle p q))
                                   )
                               (angle q p)
                               (angle p q)
                             )
                       )
                       ;(cons 7 "city")
                       (cons 72 1)
                       (cons 73 1)
                       (cons 40 (* 2 (getvar "dimscale")))
                       (cons 11 pt)
                   )
          )
          (setq p q)
        )
        (if (>(getvar 'CMDACTIVE) 0) (command ""))
        (setq p (getpoint "\n指定起点"))
      )
      ;(setvar 'osmode (- (getvar osmode) 16384))
    )
)
(if (>(getvar 'CMDACTIVE) 0) (command ""))
(if os_bak(setvar 'cmdecho os_bak))
(princ)
)

reyun 发表于 2014-6-2 00:17:53

(defun c:tts(/ p q pt)
        ;(setvar'osmode 16384)
        (setqp (getpoint"指定起点"))
        (while p
            (if p
                  (progn
                                   (command "pline" p)
                                (while (setq q (getpoint p"下一点") pt (mapcar '(lambda (x) (* x 0.5)) (mapcar '+ p q)) pt (polar pt (+ (angle p q)1.5708) (* 3 (getvar "dimscale"))))
                                    (command q)
                                    (entmake
                                          (list
                                                  '(0 . "TEXT")
                                                  '(100 . "AcDbEntity")
                                                  '(100 . "AcDbText")
                                                  (cons 10 pt)
                                                  (cons 40 (* 2 (getvar "dimscale")))
                                                  (cons 1 (rtos (distance p q) 2 2))
                                                        (cons 50 (if (and (<(/ Pi 2)(angle p q))(>(* 1.5 pi)(angle p q)))(angle q p)(angle p q)))
                                                        (cons 7 "HZTXT");改了文字样式,自己改回去。
                                                        (cons 72 1)
                                                        (cons 73 1)
                                                        ;(cons 40 (* 2 (getvar "dimscale")))
                                                        (cons 11 pt)
                                                )
                                        )
                                    (setq p q)
                            )
                                (command "")
                                (setq p(getpoint"指定起点"))
                        )
                      (setvar'osmode(-(getvar osmode)16384))
              )
    )
        (princ)
)
不知这是不是你所想要的。

鱼与熊掌 发表于 2014-6-2 00:22:05

edata 发表于 2014-6-2 00:11 static/image/common/back.gif


Perfect 端午节快乐dal标注命令的第三个点命令参数哪里调的   

鱼与熊掌 发表于 2014-6-2 00:23:19

reyun 发表于 2014-6-2 00:17 static/image/common/back.gif
(defun c:tts(/ p q pt)
        ;(setvar'osmode 16384)
        (setqp (getpoint"指定起点"))


不错 谢谢帮忙

鱼与熊掌 发表于 2014-6-2 00:49:47

edata 发表于 2014-6-2 00:11 static/image/common/back.gif


我已经知道了`.`~ 谢谢帮忙

香田里浪人 发表于 2014-6-2 10:44:14

edata 发表于 2014-6-1 23:32 static/image/common/back.gif
仅供参考,

程序不错,可是标注有2个,如果只要其中一个,就是带箭头那组数据不要显示,如何修改,请您告诉我,谢谢!

鱼与熊掌 发表于 2014-6-2 13:46:06

香田里浪人 发表于 2014-6-2 10:44 static/image/common/back.gif
程序不错,可是标注有2个,如果只要其中一个,就是带箭头那组数据不要显示,如何修改,请您告诉我,谢谢! ...

(defun c:`d (/ p q pt en obj)
;(setvar'osmode 16384)
;by e版主
(setq os_bak(getvar 'cmdecho))
(setvar 'cmdecho 0)
(setq p (getpoint "\n指定起点"))
(while p
    (if      p
      (progn
      (command "pline" "_non" p)
      (while (setq q      (getpoint p "下一点")
                     pt      (mapcar '(lambda (x) (* x 0.5)) (mapcar '+ p q))
               )
          (command "_non" q)
          (entmake (list '(0 . "TEXT")
                         (cons 10 pt)
                         (cons 40 1)
                         (cons 1 (rtos (distance p q) 2 2))
                         (cons 50
                               (if (and      (< (/ Pi 2) (angle p q))
                                        (> (* 1.5 pi) (angle p q))
                                 )
                                 (angle q p)
                                 (angle p q)
                               )
                         )
                         (cons 7 "city")
                         (cons 72 1)
                         (cons 73 1)
                         (cons 40 (* 2 (getvar "dimscale")))
                         (cons 11 pt)
                   )
          )
          (setq p q)
      )
      (if (>(getvar 'CMDACTIVE) 0) (command ""))
      (setq p (getpoint "\n指定起点"))
      )
      ;(setvar 'osmode (- (getvar osmode) 16384))
    )
)
(if (>(getvar 'CMDACTIVE) 0) (command ""))
(if os_bak(setvar 'cmdecho os_bak))
(princ)
)

香田里浪人 发表于 2014-6-2 14:36:33

鱼与熊掌君,谢谢你答复,

鱼与熊掌 发表于 2014-6-2 17:42:17

香田里浪人 发表于 2014-6-2 14:36 static/image/common/back.gif
鱼与熊掌君,谢谢你答复,

不客气`~~~~~~~~~
页: 1 [2] 3
查看完整版本: 求完善下代码.(画线并自动标注功能) (源码来自73.)