Recommended Posts

Posted
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")
 

Posted

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

Posted (edited)
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.

Edited by kojacek
Posted
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

Posted

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...

Posted

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

Posted

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 

Posted
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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now