Добрый день,
Я хочу, чтобы присоединенный код запускался как QDIM в Autocad. Моя проблема в моем коде - я выбираю расположение размерной линии после того, как это измерение появляется. Я хочу увидеть все размеры, а затем выбрать местоположение, как в команде QDIM. У меня есть идея выполнить команду перемещения в конце моего кода.
Спасибо
'''
(vl-load-com)
(defun C:FH ( / *error* doc oVAR ss i pts ptsx ptsy d d0 filter)
(defun *error* (errmsg)
(if (not (wcmatch errmsg "Function cancelled,quit / exit abort,console break"))
(princ (strcat "\nError: " errmsg)))
(foreach e oVAR (setvar (car e) (cdr e)))
(vla-endundomark doc)
(princ))
(vla-startundomark (setq doc (vla-get-activedocument (vlax-get-acad-object))))
(foreach e '(CMDECHO ORTHOMODE)
(setq oVAR (cons (cons e (getvar e)) oVAR)))
(setvar 'CMDECHO 0)
(setvar 'ORTHOMODE 0)
(if (and (princ "\nNeed blocks, ")
(setq ss (ssget (list '(0 . "INSERT"))))
(< 1 (setq i (sslength ss)))
(while (not (minusp (setq i (1- i))))
(setq pts (cons (cdr (assoc 10 (entget (ssname ss i)))) pts)))
(setq ptsx (vl-sort pts '(lambda (p q) (< (car p) (car q)))))
(setq ptsy (vl-sort pts '(lambda (p q) (< (cadr p) (cadr q)))))
(setq d (abs (/ (- (car (last ptsx)) (caar ptsx)) ;xmax-xmin
(if (zerop (setq d0 (- (cadr (last ptsy)) (cadar ptsy)))) ;ymax-ymin
0.001
d0))))
(setq pt (getpoint "\nSpecify dimension line location: "))
(or *DimTypeBDA
(setq *DimTypeBDA "Aligned"))
(not (initget "Horizontal Vertical Aligned"))
(setq *DimTypeBDA (cond ((getkword (strcat "\nType of dimension ["
(cond ((> d 1000.) (if (= *DimTypeBDA "Vertical") (setq *DimTypeBDA "Horizontal")) "Horizontal")
((< d 0.001) (if (= *DimTypeBDA "Horizontal") (setq *DimTypeBDA "Vertical")) "Vertical")
("Horizontal/Vertical"))
"/Aligned] <" *DimTypeBDA ">: ")))
(*DimTypeBDA)))
(setq pts (if (or (= *DimTypeBDA "Horizontal")
(and (= *DimTypeBDA "Aligned")
(> (- (car (last ptsx)) (caar ptsx))
(- (cadr (last ptsy)) (cadar ptsy)))))
ptsx
ptsy))
(setq i 0)
)
(repeat (1- (length pts))
(cond ((= *DimTypeBDA "Horizontal")
(command "_.DIMLINEAR"
"_none" (nth i pts)
"_none" (nth (1+ i) pts)
"_H"
"_none" pt))
((= *DimTypeBDA "Vertical")
(command "_.DIMLINEAR"
"_none" (nth i pts)
"_none" (nth (1+ i) pts)
"_V"
"_none" pt))
(T ;Aligned
(command "_.DIMALIGNED"
"_none" (nth i pts)
"_none" (nth (1+ i) pts)
"_none" pt)))
(setq i (1+ i)))
(princ (strcat "\nError: Wrong selection of at least 2 BLOCKS.")))
(foreach e oVAR (setvar (car e) (cdr e)))
(vla-endundomark doc)
(princ)
)'''