KBR
-
Postów
265 -
Dołączył
-
Ostatnia wizyta
-
Wygrane w rankingu
1
Aktywność reputacji
-
KBR otrzymał(a) reputację od onentelof w Lisp do opisu
Witam ma taki lisp zrobiony jeszcze kiedy pracowałem na autocadzie.
Procedura działa na ZWCAD 2012 ale nie dział na ZWCAD2012+
Już dawno nie pisałem lispów więc trudno mi znaleść błąd.
Lisp wywala się prawdopodobnie na poleceniu mtext chyba nie umie kreślić punktu wstawienia mtextu
Może koś umie pomóc?
;**********************************************************************************
;Opis za pomocą mtekstu ze stałą skalą raz przyjetą
;***************************************************************************************
(defun c:tt (/ pt1 pt2 e )
(setq osmode1 (getvar "osmode"))(setq osmode3 (getvar "osmode"))
(If (= sc2 nil)(setq sc2 (getvar "dimscale")))
(if (= sc3 nil)
(progn
(setq sc3 (getreal (strcat "\nPodaj skalę rysunku <" (rtos sc2 2 0) ">: ") ))
(if (= sc3 nil)(setq sc3 sc2))
(setq sc2 sc3)
))
(command "textstyle" "standard")
(setq h (/ (* sc3 25) 10))
(setq h1 (* sc3 0.5))
(setq warstwa (getvar "clayer"))
(command "ortho" "on")
(setq war "opis")
(if (null C:tlyr)(load "F:/a_block/lay/tlyr"))
(command "tlyr" "")
(command "layer" "m" "opis" "" "" "" "")
(command "osnap" "nea")
(setq pt1 (getpoint "\n Start :"))
(command "osnap" "non")
(setq pt2 (getpoint "\n To point :"))
(setq radx (angtof "0" 0))
;(setq rady (angtof "90" 0))
;(setq rad45 (angtof "45" 0))
;(setq rad60 (angtof "60" 0))
;(setq rad30 (angtof "30" 0))
;(setq rad300 (angtof "300" 0))
(setq w (* (* sc3 25) 10))
(setq pt6 (polar pt2 radx w))
(if (<= (car pt1)(car pt2))
(progn
(command "mtext" pt2 "H" h "J" "Bl" "W" w "")
(setq e (entget (entlast)))
(setq pt3 ( cadr (textbox e)))
(setq pt4 '(0 0 ))
(setq dl (distance pt4 pt3))
(setq sc1 dl)
)
(progn
(command "mtext" pt2 "H" h "J" "Br" "W" w "")
(setq e (entget (entlast)))
(setq pt3 ( cadr (textbox e)))
(setq pt4 '(0 0 ))
(setq dl (distance pt4 pt3))
(setq sc1 (- 0 dl))
)
)
(if (/= e nil)(command "_leader" pt1 pt2 "" "" "" ""))
(COMMAND "change" "last" "" "p" "c" "8" "")
(command "layer" "set" warstwa "")
(command "osmode" osmode1 )
);defun
-
KBR przyznał(a) reputację dla Assgarth w Odczytywanie długości elementów
Proszę spróbować w ten sposób:
(command "_lengthen" (car (entsel "\nWskaż obiekt do odczytu długości: "))) (getvar "perimeter") lub jeszcze lepiej, pobrać bibliotekę stąd:
http://cad.pl/ftp/Pack/v1/CADPL-Pack-v1.lsp
a następnie użyć polecenia:
(cd:ACX_GetProp (car(entsel "\nWskaż obiekt: ")) '("Length" "Angle")) Dla LWPOLYLINE, trzeba by określić kąt dla wskazanego segmentu (w przypadku gdy nie jest to łuk).
Ale to dopiero wówczas można zrobić, kiedy faktycznie okaże się konieczne.
EDIT:
lub też użyć funkcji Lee-Mac:
(defun c:tlen ( / e i l s ) (if (setq s (ssget '( (0 . "ARC,CIRCLE,ELLIPSE,LINE,*POLYLINE,SPLINE") (-4 . "<NOT") (-4 . "<AND") (0 . "POLYLINE") (-4 . "&") (70 . 80) (-4 . "AND>") (-4 . "NOT>") ) ) ) (progn (setq l 0.0) (repeat (setq i (sslength s)) (setq e (ssname s (setq i (1- i))) l (+ l (vlax-curve-getdistatparam e (vlax-curve-getendparam e))) ) ) (princ "\nTotal Length: ") (princ (rtos l)) ) ) (princ) ) pozdrawiam
-
KBR przyznał(a) reputację dla kruszynski w Lisp do opisu
Witam
Problem z MTextem jest taki, że w starszej wersji ZWCADa
(command "mtext" pt2 "H" h "J" "Bl" "W" w "") Tworzyło tekst i prosiło Użytkownika o wpisanie treści. Wersji 2012+ MText w tej postaci kończy działanie. Jedyny sposób jaki znam, by w tej sytuacji poprosić Użytkownika o wpisanie tekstu jest użycie funkcji (getstring) Niestety nie pozwala ona na użycie wbudowanego edytora a jedynie podanie treści, która będzie użyta jako wartość tekstu.
Kolejna sprawa to funkcja:
(command "layer" "m" "opis" "" "" "" "") gdzie "" kończy polecenie a kolejne "" powtarzają ostatnio użyte polecenia. Funkcja powinna mieć raczej postać:
(command "layer" "m" "opis" "") Całość kodu mogłaby wyglądać tak
(defun c:tt (/ pt1 pt2 e ) (setq osmode1 (getvar "osmode"))(setq osmode3 (getvar "osmode")) (If (= sc2 nil)(setq sc2 (getvar "dimscale"))) (if (= sc3 nil) (progn (setq sc3 (getreal (strcat "\nPodaj skalę rysunku <" (rtos sc2 2 0) ">: ") )) (if (= sc3 nil)(setq sc3 sc2)) (setq sc2 sc3) )) (command "_textstyle" "standard") (setq h (/ (* sc3 25) 10)) (setq h1 (* sc3 0.5)) (setq warstwa (getvar "clayer")) (command "_ortho" "on") (setq war "opis") ;(command "layer" "m" "opis" "" "" "" "") (command "_layer" "m" "opis" "") (command "_osnap" "nea") (setq pt1 (getpoint "\n Start :")) (command "_osnap" "non") (setq pt2 (getpoint "\n To point :")) (setq radx (angtof "0" 0)) ;(setq rady (angtof "90" 0)) ;(setq rad45 (angtof "45" 0)) ;(setq rad60 (angtof "60" 0)) ;(setq rad30 (angtof "30" 0)) ;(setq rad300 (angtof "300" 0)) (setq w (* (* sc3 25) 10)) (setq pt6 (polar pt2 radx w)) (setq wartosc (getstring "podaj treść" )) ;(if (<= (car pt1)(car pt2)) ; (progn ; (command "_mtext" pt2 "H" h "J" "Bl" "W" w wartosc "") ; ) ; (progn ; (command "_mtext" pt2 "H" h "J" "Br" "W" w wartosc "") ; ) ;) ;(if (/= e nil) (command "_leader" pt1 pt2 "a" wartosc "") (command "_regen") (COMMAND "_change" "last" "" "p" "c" "8" "") (command "_layer" "set" warstwa "") (command "_osmode" osmode1 ) );defun Pozdrawiam
-
KBR przyznał(a) reputację dla KBR w czcionka romans
ZWCAD + eng nie widzi czcionki romans i podobnych shx (kilka shx jednak jest dostępnych).
Skopiowałem np wymiar ( z innego rysunku) który ma zastosowany styl z czcionkę romans to ten styl jest dostępny z czcionką romans, jednak dalej nie mogę wczytać czcionki do innych styli.
Może muszę podać dodatkową ścieżkę albo przekopiować pliki czcionek do jakiegoś katologu.
-
KBR przyznał(a) reputację dla pawmal w czcionka romans
Witam
Proszę sprawdzić czy w katalogu fonts, w miejscu gdzie zainstalowany jest program, znajduje sie czcionka Romans.shx. Jeśli pliku nie ma w tym katalogu, to należy go tam skopiować.
Pozdrawiam