-
Postów
272 -
Dołączył
-
Ostatnia wizyta
-
Wygrane w rankingu
43
Ostatnia wygrana kojacek w dniu 22 Grudnia 2025
Użytkownicy przyznają kojacek punkty reputacji!
Profile Information
-
Gender
Male
Ostatnie wizyty
Blok z ostatnimi odwiedzającymi dany profil jest wyłączony i nie jest wyświetlany użytkownikom.
Osiągnięcia kojacek
Nowicjusz (2/6)
74
Reputacja
-
kojacek obserwuje zawartość Właściwość DimTxtDirection , Blok ze statycznym punktem zaczepienia , Długość polilinii i 2 innych
-
Blok ze statycznym punktem zaczepienia
kojacek odpowiedział(a) na snooper83 temat w ZWCAD Standard i Professional
Blok dynamiczny z parametrem rozciągania biegunowego. W tym przypadku pewnie będzie trzeba mieć 2 bloki ("lewy i prawy"), dlatego też wielolinia odniesienia z blokiem i atrybutami jednak lepiej zda egzamin. -
Długość polilinii
kojacek odpowiedział(a) na padon temat w Wsparcie programistyczne LISP i VisualLISP
-
Długość polilinii
kojacek odpowiedział(a) na padon temat w Wsparcie programistyczne LISP i VisualLISP
Voila! Musisz mieć wczytany CADPL-Pack. I ten kod: ; -------------------------------------------------------------------- ; ; MLELEN by kojacek 2026 ; -------------------------------------------------------------------- ; (defun C:MLELEN ()(jk:ACX_MLePlineLen)(princ)) ; -------------------------------------------------------------------- ; (defun jk:ACX_MLePlineLen (/ %e %o %s %f %l %m %a %v) (if (and (setq %s (car (setq %e (entsel "\nWskaz polilinie:")))) (= "LWPOLYLINE" (cdr (assoc 0 (entget %s)))) ) (if (setq %e (getpoint (setq %f (cadr %e)) "\nPunkt opisu:")) (progn (setq %l (strcat "%<\\AcObjProp Object(%<\\_ObjId " (GetObjectID (vlax-ename->vla-object %s)(cd:ACX_ADoc)) ">%).Length \\f \"%lu2%pr2\">%" ) %a (angle %f %e) ) (cd:SYS_UndoBegin) (setq %m (jk:ACX_AddMleader (cd:ACX_ASpace) %l %f %e 1) ) (vla-SetDogLegDirection %m 0 (vlax-3D-point (list (if (<= (car %f)(car %e)) 1 -1) 0 0) ) ) (vla-update %m) (vla-Regen (cd:ACX_ADoc) acActiveViewport) (cd:SYS_UndoEnd) ) ) ) ) ; -------------------------------------------------------------------- ; (defun jk:ACX_AddMleader (Space txt Ps Pe Dir / v vo) (if (= (length Ps) 2)(setq Ps (append Ps (list 0.0)))) (if (= (length Pe) 2)(setq Pe (append Pe (list 0.0)))) (setq v (vlax-make-variant (vlax-safearray-fill (vlax-make-safearray vlax-vbdouble '(0 . 5)) (apply 'append (list Ps Pe)) ) ) ) (setq vo (vla-addMleader Space v 0)) (if txt (vla-put-TextString vo txt)) (vla-SetDogLegDirection vo 0 (vlax-3D-point (list Dir 0.0 0.0 ) ) ) (vla-SetLeaderLineVertices vo 0 v) vo ) ; -------------------------------------------------------------------- ; (defun GetObjectID (obj doc) ;; Lee Mac (if (eq "64" (strcase (getenv "PROCESSOR_ARCHITECTURE"))) (vlax-invoke-method (vla-get-Utility doc) 'GetObjectIdString obj :vlax-false) (itoa (vla-get-Objectid obj)) ) ) ; -------------------------------------------------------------------- ; A wygląda to tak: -
Długość polilinii
kojacek odpowiedział(a) na padon temat w Wsparcie programistyczne LISP i VisualLISP
https://kojacek.wordpress.com/2018/01/23/etykietowanie-polilinii/ -
dmatusz3 zareagował(a) na odpowiedź w temacie:
Czy jest jakaś funkcja lub lisp który pozwoli zestawić listę layoutów?
-
Można szybko napisać krótkiego Lisp-a. Na przykład wykorzystując bibliotekę CADPL-Pack-v1.lsp (https://kojacek.wordpress.com/2015/11/04/cadpl-pack/). Funkcją cd:BLK_GetAtts zbierzesz wartości atrybutów bloku (dla każdego layout-u), następnie w dowolny sposób przeformatować listę tak jak potrzeba, i w końcu funkcją cd:SYS_WriteFile możesz zapisać wynik w pliku tekstowym. Zwykle takie rozwiązania są bardziej indywidulane (zależą od nazwy bloków, tagów atrybutów, kolejności wartości itp.) niż uniwersalne.
-
pawmal zareagował(a) na odpowiedź w temacie:
Grupowa zmiana nazw bloków
-
To problem stosunkowo prosty do rozwiązania, (oczywiście) za pomocą LISP-a. Poniżej krótki uproszczony kod programu. Wcześniej trzeba załadować bibliotekę CADPL-Pack-v1.lsp (https://kojacek.wordpress.com/2015/11/04/cadpl-pack/) Potem należy załadować dwie poniższe funkcje: ; -------------------------------------------------------------------- ; ; by kojacek 2025 (https://kojacek.wordpress.com) ; ; -------------------------------------------------------------------- ; (defun C:RENBLO (/ %o %n %l %i) (if (setq %l (cd:SYS_CollList "BLOCK" (+ 1 2 4 8))) (progn (if (and (setq %o (getstring T "\nPodaj początek nazwy bloku zmienianego:")) (setq %n (getstring T "\nPodaj przedrostek nowej nazwy:")) ) (if (snvalid %n 1) (progn (setq %i (strlen %o)) (cd:SYS_UndoBegin) (foreach % %l (if (wcmatch % (strcat %o "*")) (jk:BLK_Rename % (strcat %n (substr % (1+ %i) 300)) ) ) ) (cd:SYS_UndoEnd) ) (princ "\nNieprawidłowy ciąg znaków.") ) ) ) (princ "\nW rysunku nie ma bloków.") ) (princ) ) ; -------------------------------------------------------------------- ; (defun jk:BLK_Rename (OldName NewName / ) (if (and (snvalid NewName 1) (not (tblobjname "BLOCK" NewName)) ) (if (tblobjname "BLOCK" OldName) (vla-put-Name (vla-item (cd:ACX_Blocks) OldName) NewName ) ) ) ) ; -------------------------------------------------------------------- ; Następnie wywołać polecenie RENBLO, podać ciąg znaków początku nazwy bloków do zmiany, a potem ciąg znaków którymi będzie on zamieniony... Przykładowo: "OKNO_podwojne - O3_G_Balkonowe" zamieniasz na "0-OK" co ilustrują poniższe obrazy: Przed: oraz po zmianie przez RENBLO:
-
Właściwość DimTxtDirection
kojacek odpowiedział(a) na kojacek temat w Wsparcie programistyczne LISP i VisualLISP
Ok. Sprawdzę jak to działa - czyli podsumowując ten stan jest zapisywany w XData (podobnie jak inne nadpisania zmiennych wymiaru), a nie jak początkowo było mówione o kodzie 53 "zwykłych" danych DXF. Jak już jesteśmy przy ZwCAD-zie... Jak przypisać właściwość Annotative do tekstu/wymiaru/kreskowania/itp. pomijając ręczną zmianę we Właściwościach? W AutoCAD polecenie _CHPROP ma opcję Annotative, jednak jak słyszę ZwCAD tego nie ma. -
Właściwość DimTxtDirection
kojacek odpowiedział(a) na kojacek temat w Wsparcie programistyczne LISP i VisualLISP
(vla-put-DimTxtDirection Obj (Val-Invert (vla-get-DimTxtDirection Obj))) gdzie Val-Invert to funkcja która "odwraca" wartość (np 0 na 1 / false na true / nil na T itd (i odwrotnie)) -
Właściwość DimTxtDirection
kojacek odpowiedział(a) na kojacek temat w Wsparcie programistyczne LISP i VisualLISP
Ok, to znam. Jednak to nie załatwia sprawy. Potrzeba jest nieco inna: najpierw odczytać, a potem zmienić (lub nie). Stąd było pytanie o stan właściwości DimTxtDirection. -
Właściwość DimTxtDirection
kojacek odpowiedział(a) na kojacek temat w Wsparcie programistyczne LISP i VisualLISP
Obawiam się że coś się nie zgadza... Na obrazie widać dwa wymiary (wyraźnie) różniące się położeniem i orientacją tekstu wymiarowego. Różnice są widoczne także w wartości właściwości DimTxtDirection - są to wartości logiczne odpowiednio :vlax-false ("normalny") i :vlax-true ("odwrócony"). Dla tychże wymiarów (różniących się przecież), kod 53 DXF jest liczbą rzeczywistą i wynosi jednakowo 0.0 (Przykład w AutoCAD, bo w ZwCAD właściwość DimTxtDirection nie ma wartości - co jest w końcu tematem wątku) -
Właściwość DimTxtDirection
kojacek odpowiedział(a) na kojacek temat w Wsparcie programistyczne LISP i VisualLISP
Dzięki... Dla tego wymiaru (już z ciekawości przejrzałem) właściwości bez wartości jest więcej: AltSubUnitsFactor = AltSubUnitsSuffix = DimConstrDesc = DimConstrValue = DimTxtDirection = SubUnitsFactor = SubUnitsSuffix = -
Właściwość DimTxtDirection
kojacek opublikował(a) temat w Wsparcie programistyczne LISP i VisualLISP
LISP który działa normalnie w AC, nie działa w ZWCAD 2026. Zauważyłem że dla wymiaru właściwość DimTxtDirection nie ma wartości. To błąd czy umyślne zaniechanie?