l982414 发表于 2017-12-6 13:03:43

插件修改

谁帮我把这个标注插件,修改一下。(问题点:使用过程中,经常无缘无故把设置好的捕捉点全去掉了,如图)

琴剑江山_10184 发表于 2017-12-6 13:31:47

(DEFUN C:DQ (/       *error*ANG       E   EN    J           LEN       OLDERR             OS
             PT1   PT2       PT3   PT4   SS           ENT       ENTLI   NP13
             NP14P10       P13   P14   PTT   OSM
          )
(defun *error* (msg) (setvar 'osmode 15359))
(SETVAR "cmdecho" 0)
(command "_.undo")
(command "be")
(command "_ucs")
(command "_w")
(PROMPT "\n不修改的标注不要选在里面")
(if (setq SS (SSGET '((0 . "DIMENSION"))))
    (PROGN (setq EN (ENTGET (SSNAME SS 0)))
           (if (MEMBER '(100 . "AcDbRotatedDimension") EN)
             (PROGN (setq ANG (CDR (ASSOC 50 EN))))
             (PROGN
             (setq ANG (ANGLE (CDR (ASSOC 13 EN)) (CDR (ASSOC 14 EN))))
             )
           )
    )
)
(if (AND ANG (setq PT1 (GETPOINT "\n尺寸线位置<不变>:")))
    (PROGN (setq OSM (GETVAR "osmode"))
           (SETVAR "osmode" 0)
           (setq PT2 (POLAR PT1 ANG 1000))
           (setq J 0)
           (setq LEN (SSLENGTH SS))
           (while (and (< J LEN))
             (setq E (SSNAME SS J))
             (setq EN (ENTGET (SSNAME SS J)))
             (setq PT3 (CDR (ASSOC 10 EN)))
             (setq PT4 (INTERS PT1
                             PT2
                             PT3
                             (POLAR PT3 (+ ANG (* 0.5 PI)) 100)
                             nil
                     )
             )
             (setq J (1+ J))
             (command "move")
             (command E)
             (command "")
             (command PT3)
             (command PT4)
           )
           (SETVAR "osmode" OSM)
    )
)
(if (AND ANG (setq PT1 (GETPOINT "\n尺寸界线位置<不变>:")))
    (PROGN
      (setq OSM (GETVAR "osmode"))
      (SETVAR "osmode" 0)
      (setq PT2 (POLAR PT1 ANG 100))
      (setq PT1 (TRANS PT1 1 0))
      (setq PT2 (TRANS PT2 1 0))
      (setq I 0)
      (REPEAT (SSLENGTH SS)
        (setq ENT (SSNAME SS I))
        (setq ENTL (ENTGET ENT))
        (setq P10 (CDR (ASSOC 10 ENTL)))
        (setq P13 (CDR (ASSOC 13 ENTL)))
        (setq P14 (CDR (ASSOC 14 ENTL)))
        (setq PTT (CDR (ASSOC 11 ENTL)))
        (setq I (1+ I))
        (setq NP14 (INTERS PT1 PT2 P14 P10 nil))
        (if (NOT (MEMBER '(100 . "AcDbRotatedDimension") ENTL))
          (PROGN
          (setq NP13 (POLAR NP14 (ANGLE P14 P13) (DISTANCE P14 P13)))
          )
          (PROGN (setq NP13 (INTERS PT1
                                  PT2
                                  P13
                                  (POLAR P13 (ANGLE P14 P10) 100)
                                  nil
                          )
               )
          )
        )
        (setq ENTL (SUBST (CONS 13 NP13) (ASSOC 13 ENTL) ENTL))
        (setq ENTL (SUBST (CONS 14 NP14) (ASSOC 14 ENTL) ENTL))
        (ENTMOD ENTL)
      )
      (SETVAR "osmode" OSM)
    )
)
(command "_ucs")
(command "p")
(command "_.undo")
(command "e")
(SETVAR "cmdecho" 1)
(Y-TFX)
(PRINC)
)

龙吟小调 发表于 2017-12-9 19:55:20

论坛里找,有一个对象捕捉设置的插件
页: [1]
查看完整版本: 插件修改