Rekomendowane odpowiedzi

Opublikowano
2 godziny temu, czarnula_100 napisał:

Czy jest jakaś funkcja już istniejąca lub lisp który pozwoli zestawić listę layoutów, automatycznie, chodzi o  stworzenie listy rysunków np do późniejszego opisu ? 

Co rozumiesz przez "zestawić listę layoutów"? Jeśli chodzi o same nazwy layoutów, funkcja AutoLISP o nazwie layoutlist załatwia sprawę. Przykładowo:

(layoutlist) -> ("PIETRO 1-4" "PRZEKROJE")
 

Opublikowano

A jest taka możliwość by zrobić zestawienie rysunków (layotów) do pliku tekstowego ze zmiennymi z tabelki rysunkowej w stylu:

TYTUŁ RYSUNKU SKALA ..... NR RYSUNKU
NP.
RZUT FUNDAMENTÓW 1:50 ............. K-01

Opublikowano (edytowane)
8 godzin temu, Martin_S napisał:

A jest taka możliwość by zrobić zestawienie rysunków (layotów) do pliku tekstowego ze zmiennymi z tabelki rysunkowej w stylu:

TYTUŁ RYSUNKU SKALA ..... NR RYSUNKU
NP.
RZUT FUNDAMENTÓW 1:50 ............. K-01

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.

Edytowane przez kojacek
Opublikowano
W dniu 18.12.2025 o 09:30, pawmal napisał:

Proszę wraz z nawiasem wpisać

(layoutlist)

nie ma takiej komendy, pracuję na wersji ENG wiec opcja z podkreślnikiem też nie powinna być konieczna,  a też jej nie ma

Reasumując poradziłam sobie, poratowałam się lispem z neta

wiem, że są tu "wytrawni gracze" ale może takiemu laikowi jak ja się przyda😀


 

(defun c:ZESTLAY (/ doc lays laylist i pt rows cols rowh colw tab)

  (vl-load-com)

  (setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
  (setq lays (vla-get-Layouts doc))
  (setq laylist '())

  ;; zbierz layouty (bez Model)
  (vlax-for lay lays
    (if (/= (strcase (vla-get-Name lay)) "MODEL")
      (setq laylist (append laylist (list (vla-get-Name lay))))
    )
  )

  ;; punkt wstawienia tabeli
  (setq pt (getpoint "\nWskaż punkt wstawienia tabeli: "))

  (setq rows (+ 1 (length laylist))) ; nagłówek + layouty
  (setq cols 2)
  (setq rowh 8.0)
  (setq colw '(15.0 80.0))

  ;; utwórz tabelę
  (setq tab
    (vla-AddTable
      (vla-get-ModelSpace doc)
      (vlax-3d-point pt)
      rows
      cols
      rowh
      (car colw)
    )
  )

  ;; ustaw szerokości kolumn
  (vla-SetColumnWidth tab 0 (nth 0 colw))
  (vla-SetColumnWidth tab 1 (nth 1 colw))

  ;; nagłówki
  (vla-SetText tab 0 0 "Nr")
  (vla-SetText tab 0 1 "Nazwa rysunku")

  ;; wypełnij tabelę
  (setq i 1)
  (foreach name laylist
    (vla-SetText tab i 0 (itoa i))
    (vla-SetText tab i 1 name)
    (setq i (1+ i))
  )

  (princ "\nZestawienie layoutów utworzone.")
  (princ)
)

 

yyyy.jpg

xxxxxx.jpg

Opublikowano

Dla ścisłości. Całą poniższą zabawę:

(setq laylist '())

  ;; zbierz layouty (bez Model)
  (vlax-for lay lays
    (if (/= (strcase (vla-get-Name lay)) "MODEL")
      (setq laylist (append laylist (list (vla-get-Name lay))))
    )
  )

załatwia przecież samo:

(layoutlist)

o czem przecież mowa od samego początku jest...

Opublikowano

najlepiej jeszcze jak by się dało oddzielić  nr rysunku czyli np A-16 od dalszej nazwy typu SEKCJA C- RZUT III PIĘTRA, ( nazwy layouta nie chcę zmieniać bo to znowu mi się przydaje do póżniejszego "drukowania do pdf" funkcją PUBLISH

Opublikowano

wiem, że to może głupie ale gdyby tak... nazwa layoutu mogła być  blokiem z atrybutami wtedy przez dataextraction można by było "wyciągnąć" potrzebne atrybuty i wyeksportować do plików zewnętrznych, takie jak nr rys, nazwę , skalę, etc 

Opublikowano
Godzinę temu, czarnula_100 napisał:

najlepiej jeszcze jak by się dało oddzielić  nr rysunku czyli np A-16 od dalszej nazwy typu SEKCJA C- RZUT III PIĘTRA, ( nazwy layouta nie chcę zmieniać bo to znowu mi się przydaje do póżniejszego "drukowania do pdf" funkcją PUBLISH

To ja proponuję taki prosty skrypt. Działa tak, że oddziela człon sprzed "_" i wpisuje do komórki Nr arkusza a resztę do nazwy. Jak "_" nie znajdzie to wpisuje po prostu aktualne LP. Tabela będzie wyglądać jak na screenie
image.thumb.png.95f23f2aa470b099fe01eb7c2b45d37b.png

TableOfLayouts.zelx

Opublikowano
6 minut temu, ktomaszewski napisał:

To ja proponuję taki prosty skrypt. Działa tak, że oddziela człon sprzed "_" i wpisuje do komórki Nr arkusza a resztę do nazwy. Jak "_" nie znajdzie to wpisuje po prostu aktualne LP. Tabela będzie wyglądać jak na screenie
image.thumb.png.95f23f2aa470b099fe01eb7c2b45d37b.png

TableOfLayouts.zelx 1.03 kB · 0 pobrań

o to mi chodziło od początku, BARDZO DZIĘKUJĘ , przyspieszy to robotę

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się