KBR

Użytkownik forum
  • Postów

    265
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    1

Aktywność reputacji

  1. Downvote
    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
     
     
     
  2. Upvote
    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
  3. Upvote
    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
  4. Upvote
    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.
  5. Upvote
    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