Leaderboard

Popular Content

Showing content with the highest reputation since 07/01/21 in all areas

  1. Pracujemy obecnie nad dodaniem do naszych nakładek (np. ZWGeo, ZWTraffic) możliwości wstawiania map z zasobów z portali gov.pl. Funkcjonalność jest w bardzo początkowej fazie, ale postanowiliśmy ją udostępnić. Możemy wybrać różne serwery z danymi i sprawdzić jakie udostępnia dane (warstwy). Następnie definiujemy obszar w który ma być wstawiona mapa. Wygląda to tak jak na animacji poniżej. Biblioteki do pobrania ZWMS.zip Pobrany plik zip należy rozpakować do katalogu i poleceniem netload (tylko wersja ZWCAD Pro) wczytać plik ZWMS.dll Wtedy pojawi się dodatkowy panel. W pliku zip znajduje się również plik Plik_testowy.dwg, który został użyty podczas kręcenia filmu.
    6 points
  2. Podpierając się lispem LeeMac'a można wybrać kartotekę z plikami dwg i w czambuł polecieć wszystkie wygenerowanym skryptem. (defun C:LTSALLDWG ( / count dir filename files scriptname) (setq dir (LM:DirectoryDialog "Select directory" "" 1)) (if dir (setq files (vl-directory-files dir "*.dwg" 1)) ) (if files (progn (setq scriptname (open "e:\\temp\\batch.scr" "w") count 0 ) (while (setq filename (nth count files)) (setq filename (strcat dir "\\" filename)) (write-line (strcat "_open \"" filename "\"") scriptname) (write-line (strcat "(vl-cmdf \"" "setvar\"" " " "\"" "ltscale\"" " " "\"1\"" " " "\"" "\"" ")") scriptname) (write-line "_qsave" scriptname) (write-line "_close" scriptname) (setq count (1+ count)) ) (close scriptname) ) ) (princ) ) ;;-------------------=={ Directory Dialog }==-----------------;; ;; ;; ;; Displays a dialog prompting the user to select a folder ;; ;;------------------------------------------------------------;; ;; Author: Lee Mac, Copyright © 2011 - www.lee-mac.com ;; ;;------------------------------------------------------------;; ;; Arguments: ;; ;; msg - message to display at top of dialog ;; ;; dir - root directory (or nil) ;; ;; flag - bit coded flag specifying dialog display settings ;; ;;------------------------------------------------------------;; ;; Returns: Selected folder filepath, else nil ;; ;;------------------------------------------------------------;; (defun LM:DirectoryDialog ( msg dir flag / Shell Fold Self Path ) (vl-catch-all-apply (function (lambda ( / ac HWND ) (if (setq Shell (vla-getInterfaceObject (setq ac (vlax-get-acad-object)) "Shell.Application") HWND (vl-catch-all-apply 'vla-get-HWND (list ac)) Fold (vlax-invoke-method Shell 'BrowseForFolder (if (vl-catch-all-error-p HWND) 0 HWND) msg flag dir) ) (setq Self (vlax-get-property Fold 'Self) Path (vlax-get-property Self 'Path) Path (vl-string-right-trim "\\" (vl-string-translate "/" "\\" Path)) ) ) ) ) ) (if Self (vlax-release-object Self)) (if Fold (vlax-release-object Fold)) (if Shell (vlax-release-object Shell)) Path ) ;Symbol Type Description ;msg String Message to display to the top of the dialog (may be an empty string) ;dir String (Optional) Root Directory, user cannot navigate above this level ;flag Integer Bit flags controlling the behaviour of the dialog interface (detailed below) ;Returns: Selected Directory, else nil if user presses Cancel ;Flag Bit Values ;Bit Result ;0 Standard behaviour (Default) ;1 Only file system folders can be selected. If this bit is set, the OK button is disabled if the user selects a folder that doesn't belong to the file system. ;2 The user is prohibited from browsing below the domain within a network ;4 Room for status text is provided under the dialog box ;8 Returns file system ancestors only. An ancestor is a subfolder that is beneath the root folder. If the user selects an ancestor of the root folder that is not part of the file system, the OK button is grayed. ;16 Shows an edit box in the dialog box for the user to type the name of an item. ;32 Validate the name typed in the edit box. ;64 Enable drag-and-drop capability within the dialog box, reordering, shortcut menus, new folders, delete, and other shortcut menu commands. ;128 The browse dialog box can display URLs. ;256 When combined with flag 64, adds a usage hint to the dialog box, in place of the edit box. ;512 Suppresses display of the 'New Folder' button ;1024 When the selected item is a shortcut, return the PIDL of the shortcut itself rather than its target. ;4096 Enables the user to browse the network branch for computer names. If the user selects anything other than a computer, the OK button is grayed. ;8192 Enables the user to browse the network branch for printer names. If the user selects anything other than a printer, the OK button is grayed. ;16384 Allows browsing for everything: the browse dialog box displays files as well as folders. ;32768 If combined with flag 64, the browse dialog box can display shareable resources on remote systems. ;65536 Windows7 & later: Allow folder junctions such as a library or a compressed file with a .zip file name extension to be browsed.
    2 points
  3. Adam Klaczek

    2022_lista uwag

    Zgłosiłem do producenta
    1 point
  4. 😉 takie coś można wydziobać albo wydrapać... blok dynamiczny sterowany dynamicznie z okna dialogowego:
    1 point
  5. Zadanie z tych banalnych raczej... Można rozwiązać tak: ; ---------------------------------------------------------------------------- ; (defun c:testuj ()(InsBlkInPolySeg (car (entsel)) "arrow1" 20.0 15.0)(princ)) ; ---------------------------------------------------------------------------- ; ; funkcja zwraca liste segmentow LWPOLY typu: ((p1 bulge1 p2)(p2 bulge2 p3)...); ; ---------------------------------------------------------------------------- ; (defun jk:LWP_GetSegments (e / p d r) (setq d (entget e) p (if (= 1 (logand (cdr (assoc 70 d)) 1)) (cdr (assoc 10 d)) ) d (mapcar 'cdr (vl-remove-if-not '(lambda (%)(member (car %) '(10 42))) d ) ) ) (if p (setq d (append d (list p))) ) (while (> (length d) 2) (setq r (cons (list (car d) (cadr d) (caddr d) ) r ) d (cddr d) ) ) (reverse r) ) ; ---------------------------------------------------------------------------- ; (defun InsBlkInPolySeg (Poly Block Scale MinLength / d b n a p) (if (not (tblobjname "BLOCK" Block)) (princ (strcat "\nBłąd: w rysunku nie ma bloku " (strcase Block) "." ) ) (if (not (setq d (jk:LWP_GetSegments Poly)) ) (princ "\nBłąd - niepoprawna polilinia.") (if (not (setq d (vl-remove-if-not '(lambda (%)(zerop (cadr %))) d) ) ) (princ "\nBłąd - polilinia składa sie z samych łuków.") (if (not (setq d (vl-remove-if '(lambda (%) (< (distance (car %)(caddr %)) MinLength) ) d ) ) ) (princ "\nBłąd - segmenty polilinii są za krótkie.") (progn (cd:SYS_UndoBegin) (foreach % d (setq a (angle (car %)(caddr %)) p (polar (car %) a (/ (distance (car %)(caddr %)) 2.0)) ) (cd:BLK_InsertBlock p Block (list Scale Scale Scale) a nil) ) (cd:SYS_UndoEnd) ) ) ) ) ) ) ; ---------------------------------------------------------------------------- ; Polecenie TESTUJ, wywołuje funkcję InsBlkInPolySeg, dla której jednak kluczem jest funkcja jk:LWP_GetSegments. Dla całości trzeba CADPL-Pack-a który opisywałem kiedyś tutaj: https://kojacek.wordpress.com/2015/11/04/cadpl-pack/ . W uproszczeniu - groty strzałek w postaci bloku (argument Block) wstawiane są na liniowych segmentach wskazanej polilinii (argument Block - tutaj trzeba wstawić jeszcze jakieś testowanie wyboru), których długość jest większa niż argument MinLength.
    1 point
  6. z tym nie wczytywaniem wms-a (nie "zaciąga" tylko się kisi godzinę, albo od razu wywala błąd) to odwieczny problem serwera geoportalu. Ja używam wmsów, oprócz rzeczy oczywistych jak locus w terenie, to bentleya i Qgis-a i Geox-y. Qgis zasadniczo jest odporny na niedoskonałość geoportalu, gdzie najwiecej wms-ów jest gromadzonych, ale tez mu się zdarzają zacięcia. Dawniej nawet w qgisie bywało tak, żeby coś załadować, trzeba było podpiąc pod polskiego wms-a się w nocy gdy wszyscy grzecznie śpią.. Nawet oprogramowanie bentleya w tym względzie szwankuje (odpalam mikrostację - kicha, odpalam następnie qgisa - ładnie się ładuje Dlatego nie "osądzam" tej funkcjonalności dlaczego w zw wms się nie ładuje, bo to wykraczająca poza moje kompetencje sprawa.. ale najważniejsze by wms-owe współrzędne transformować jakoś na układy map geodezyjnych, na których się pracuje, to chyba podstawowy problem...
    1 point
  7. tak na szybko: divide i measure - nie.. tzn tak, ale "ładny" tj prosty i czytelny schemat z tego nie będzie.. dlatego bloki na środku odcinka z pomijaniem odcinków zbyt krótkich. i nie pomysl np z wstawianiem trójkąta z polilinii z wycięciem tego co w środku, bo wtedy demoluje się polilinię (kiedyś taki lisp widziałam).. jak chce się "wyciąć" linię to można przykryć to hatchem lub wipeoutem - może to nie jest piękne ale polilinia cała.. oczywiście lista bloków różnych "arrow" to jedno a co w tych blokach siedzi (można to przecież podmieniać) to drugie. Zresztą lista bloków może być długa jak ktoś potrzebuje może do listy dorobić następne bloki dwg dla innych bardziej fikuśnych strzałek ważne żeby pomijać odcinki na których dany typ kierunku się po prostu nie mieści. O tyle lepiej bloki a nie np jakiś wymiar, tak przynajmniej mi się wydaje, że z wymiarami różnie bywa, a blok to stabilny obiekt jeśli chodzi o "wędrówki" między różnymi programami i ważne żeby blok wstawiać na aktualnej warstwie. Warstwy w bloku powinny też być "unikatowe", żeby nie było nakładania na ist warstwy w rysunkach. w zał pliku nazwy elementów w bloku są niby unikatowe ale nie do końca.. , to można zmienić na coś bardziej nietypowego wielkość strzałek - rzecz gustu, tu są dość małe, bo dużo polilinii leci blisko siebie, ale jak schemat był by bardziej ogólny, można strzałki dac większe, to kwestia współczynnika skali.. Drawing1111.dwg
    1 point
  8. Mery

    Spatial Manager

    Promocja z okazji wydania najnowszej wersji Spatial Manager 7 ! Do końca 30 września oferujemy Państwu możliwość zakupu licencji nakładki w niższej cenie: Spatial Manager BASIC 1081 zł netto – 1364 zł netto Spatial Manager STD 1412 zł netto – 1789 zł netto Spatial Manager PRO 1884 zł netto – 2356 zł netto
    1 point
  9. Ok, znalazłem. Za dużo pętli w For I = 0 To ssetObj.Count powinno być For I = 0 To ssetObj.Count -1 Dziękuję bardzo. Ładnie działa!
    1 point
  10. Trzeba sprawdzić porównać wybrane elementy z każdym elementem w każdej grupie. Dim ent As ZcadEntity For I = 0 To ssetObj.Count Set ent = ssetObj.Item(I) Dim grs As ZcadGroups Dim gr As ZcadGroup Set grs = ThisDrawing.groups For Each gr In grs For J = 0 To gr.Count Dim entwgrupie As ZcadEntity Set entwgrupie = gr.Item(J) If entwgrupie Is ent Then MsgBox "element jest w grupie" Exit Sub End If Next J Next Next I
    1 point
  11. Witam kiedyś napisałem taki program który odczytuje parametry bloku dynamicznego: sub program() On Error Resume Next Dim z As Double Dim x As Double Dim ent As ZcadEntity Dim blk1 As ZcadBlockReference Dim ContextData As Variant Dim sset1 As ZcadSelectionSet Dim dynblk As ZcadDynamicBlockReferenceProperty Set sset1 = ThisDrawing.SelectionSets.Add("grupa1") ThisDrawing.Utility.Prompt ("wybierz bloki dynamiczne :") sset1.SelectOnScreen z = ThisDrawing.Utility.GetInteger("wybierz nr. zmiennej bloku dyn : ") z = z - 1 For Each ent In sset1 If ent.ObjectName = "AcDbBlockReference" Then Set blk1 = ent If blk1.IsDynamicBlock = True Then ContextData = blk1.GetDynamicBlockProperties Set dynblk = ContextData(z) x = x + dynblk.Value End If End If Next ThisDrawing.Utility.Prompt ("calkowita suma współczynnika (" & dynblk.PropertyName & ") wynosi = " & x) ThisDrawing.Utility.Prompt (" ") end sub teraz wystarczy go tylko przerobić do potrzeb. zrobiłem też taki blok dynamiczny powiązany z wymiarem z nudów, może taka wersja będzie wystarczająca ?? informacja o długości pręta i rozstawienia jest wyświetlona. pozdrawiam blok_pret.dwg
    1 point
  12. LISP-em można sterować parametrami bloku dynamicznego podczas aktywności okna dialogowego. Pozwala to kontrolować wizualnie dokonane zmiany. Tutaj na szybko tylko jeden parametr:
    1 point
  13. s1016

    Plany sytuacyjne

    Używam czegoś takiego, przyspiesz pracę w planie niesamowicie. Brakuje mi jeszcze liczenia spadku np po krawężniku. Do przedmiaru używam lispa zliczającego sumę wszystkich linii, plinii i łuków na warstwie, powierzchnie zliczam z właściwości hatchy Do profili i poprzeczek osobny program.
    1 point
  14. Adam Klaczek

    ZWCAD 2022 - beta

    Od kilku wersji jest wygodny sposób na m.in. dodawanie wierzchołków. W ZWCAD 2022 działa tak:
    1 point
This leaderboard is set to Warsaw/GMT+02:00