Rekomendowane odpowiedzi

22 godziny temu, jacnightingale napisał:

Czy jest jakaś szansa, żeby opis oznakowania wstawiał się na wybraną przeze mnie warstwę

Zastanawialiśmy się nad tym jak to zrobić żeby przygotować rozwiązanie  szybko. I wyszło nam, że znacznie szybciej niż przebudować logikę działania programu, będzie dorobić nową funkcję/makro, które  odpowiednie elementy wstawi na odpowiednie warstwy.
Nie działałoby to w czasie wstawiania znaku, ale zupełnie niezależnie. po włączeniu funkcji na dowolnym rysunku.
Jak taka funkcja miałaby działać? możemy zrobić np tak, że zaznaczy wszystkie strzałki (MLeadery) i wstawi je na warstwę która będzie kopią (kolor, typ liniii) tej warstwy gdzie są obecnie ale bedzie można ją wyłączyć niezależnie. Podobnie może zaznaczać wszsytkie bloki opisowe, albo wszysktie elementy, które użytkownik zaznaczy, na z góry przewidziane (w pliku konfiguracyjnym ) założone warstwy. Jak powinna taka funkcja działać, żeby najlepiej spełniać Państwa oczekiwania ? zpraszam do dyskusji

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
11 minut temu, kruszynski napisał:

Zastanawialiśmy się nad tym jak to zrobić żeby przygotować rozwiązanie  szybko. I wyszło nam, że znacznie szybciej niż przebudować logikę działania programu, będzie dorobić nową funkcję/makro, które  odpowiednie elementy wstawi na odpowiednie warstwy.
Nie działałoby to w czasie wstawiania znaku, ale zupełnie niezależnie. po włączeniu funkcji na dowolnym rysunku.
Jak taka funkcja miałaby działać? możemy zrobić np tak, że zaznaczy wszystkie strzałki (MLeadery) i wstawi je na warstwę która będzie kopią (kolor, typ liniii) tej warstwy gdzie są obecnie ale bedzie można ją wyłączyć niezależnie. Podobnie może zaznaczać wszsytkie bloki opisowe, albo wszysktie elementy, które użytkownik zaznaczy, na z góry przewidziane (w pliku konfiguracyjnym ) założone warstwy. Jak powinna taka funkcja działać, żeby najlepiej spełniać Państwa oczekiwania ? zpraszam do dyskusji

Jeżeli będzie możliwość przeniesienia w szybki sposób wszystkich opisów na zdefiniowaną przez mnie warstwę (np. ZNAKI-OPIS) to rozwiązanie jest dla mnie wystarczające. Później, gdy podczytam plik z organizacją ruchu będę mógł w łatwy sposób wyłączyć opisy.

Edytowane przez jacnightingale

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Też mi się wydaje, że to dobre rozwiązanie, bo:

  • możemy tę funkcję zastosować do istniejących już rysunków,
  • nie trzeba zmieniać logiki programu głównego,
  • łatwo będzie można utworzyć swoją konfigurację.

 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
Dnia 22.01.2018 o 20:11, ssoran napisał:

Fajnie!

Ale coś się teraz zmieniło w znakach F-10 Jak go obrócić poprawnie i straciło się niebieskie tło

Przygotowałem poprawkę z rozwiązaniem tego tematu. Aby ją poprać wystarczy uruchomić funkcję aktualizacji:

Menu.thumb.png.4fcd74b97cfab91e3973401cf640f515.png

 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
53 minuty temu, jacnightingale napisał:

Jeżeli będzie możliwość przeniesienia w szybki sposób wszystkich opisów na zdefiniowaną przez mnie warstwę (np. ZNAKI-OPIS) to rozwiązanie jest dla mnie wystarczające. Później, gdy podczytam plik z organizacją ruchu będę mógł w łatwy sposób wyłączyć opisy.

Czyli działanie programu przyjmujemy takie:
1. Użytkownik uruchamia funkcję nazwijmy ją : przenieśopisy
2. Program wybiera z rysunku bloki opisowe i ich strzałki
3. Skąd program ma wiedzieć na jaką warstwę przenieść elementy? zakładamy na stałe np "ZNAKI-OPIS" czy pozostawiamy do wyboru ? czy tworzymy kopię tej, na której opis się znajduje ?
4. Z automatu wyłączamy wybraną warstwę ?
 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Witam!

Pragnę zwrócić uwagę na nieprawidłowy kolor  biało- czerwony wygrodzenia U-12a "Bariera chodnikowa z poprzeczkami" (ta pierwsza w zestawieniu) - zgodnie z "czerwoną książką" (Rozporządzeniem) dozwolonymi kolorami dla U-12a są żółty i szary. Wiem że na drogach publicznych w naszym kraju w wielu miejscach można spotkać takie właśnie  wygrodzenia w kolorze biało- czerwonym, co nie faktu że są one niezgodne  Rozporządzeniem. My rysując takie wygrodzenia w PSOR, możemy sugerować zarządcom dróg nieprawidłowe rozwiązania niezgodne z przepisami.

Kolor biało- czerwony możemy jedynie stosować dla U-12b, U12c.

Inną sprawą jaką chciałbym poruszyć są słupki U-1a, U-1b, na drogach wojewódzkich i krajowych na tych słupkach umieszcza się dodatkowo symbole U-1f (nr drogi), U-7 (znaki kilometrowe) i U-8 (znaki hektometrowe). Dla wielu projektantów, którzy opracowują projekty PSOR na takich drogach zapewne było by wielkim ułatwieniem, gdyby wstawiając taki słupek od razu mogliby podać te wszystkie informacje. Oczywiście wiem że stosuje się również tez słupki bez w/w oznaczeń.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
7 godzin temu, kamchem napisał:

Inną sprawą jaką chciałbym poruszyć są słupki U-1a, U-1b, na drogach wojewódzkich i krajowych na tych słupkach umieszcza się dodatkowo symbole U-1f (nr drogi), U-7 (znaki kilometrowe) i U-8 (znaki hektometrowe). Dla wielu projektantów, którzy opracowują projekty PSOR na takich drogach zapewne było by wielkim ułatwieniem, gdyby wstawiając taki słupek od razu mogliby podać te wszystkie informacje. Oczywiście wiem że stosuje się również tez słupki bez w/w oznaczeń.

Ten wątek jest bardzo interesujący. Chciałbym się z tym zmierzyć w niedalekiej przyszłości ( choć na razie jeszcze nic nie obiecuję ). może Pan podesłać na adres pomoc@zwcad.pl przykład projektu gdzie takie oznaczenie jest zastosowane ? jak to powinno wyglądać? Jak chciałby Pan z takiej funkcjonalności korzystać? co chciałby Pan wprowadzić? i jaki powinien być tego wynik ?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
Dnia 21.02.2018 o 00:03, kamchem napisał:

Witam!

Pragnę zwrócić uwagę na nieprawidłowy kolor  biało- czerwony wygrodzenia U-12a "Bariera chodnikowa z poprzeczkami" (ta pierwsza w zestawieniu) - zgodnie z "czerwoną książką" (Rozporządzeniem) dozwolonymi kolorami dla U-12a są żółty i szary. Wiem że na drogach publicznych w naszym kraju w wielu miejscach można spotkać takie właśnie  wygrodzenia w kolorze biało- czerwonym, co nie faktu że są one niezgodne  Rozporządzeniem. My rysując takie wygrodzenia w PSOR, możemy sugerować zarządcom dróg nieprawidłowe rozwiązania niezgodne z przepisami.

Kolor biało- czerwony możemy jedynie stosować dla U-12b, U12c.

Inną sprawą jaką chciałbym poruszyć są słupki U-1a, U-1b, na drogach wojewódzkich i krajowych na tych słupkach umieszcza się dodatkowo symbole U-1f (nr drogi), U-7 (znaki kilometrowe) i U-8 (znaki hektometrowe). Dla wielu projektantów, którzy opracowują projekty PSOR na takich drogach zapewne było by wielkim ułatwieniem, gdyby wstawiając taki słupek od razu mogliby podać te wszystkie informacje. Oczywiście wiem że stosuje się również tez słupki bez w/w oznaczeń.

Co do U-12a, to faktycznie przepis przepisem i niektóre zarządy trzymają się go jak przysłowiowy rzep. Niewątpliwie wersja (niezgodna z przepisami) biało-czerwona jest czasami lepiej widoczna i może w aktualizacji się doczekamy i takiego rozwiązania ...

U-1a - jako rozwiązanie pośrednie moje ułatwienie w załączeniu (wersja słupka jest powiększona).

 

 

U-1a_L1.dwg

U-1a_P1.dwg

Edytowane przez Włodek
korekta

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Po wstawieniu podajemy wartość U-7 i U-8...

W  wersji L nie działa mi wstawienie opisu, ale dojdę dlaczego.... :-)

 

Edytowane przez Włodek

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
Dnia 24.01.2018 o 14:02, jacnightingale napisał:

Jeżeli będzie możliwość przeniesienia w szybki sposób wszystkich opisów na zdefiniowaną przez mnie warstwę (np. ZNAKI-OPIS) to rozwiązanie jest dla mnie wystarczające. Później, gdy podczytam plik z organizacją ruchu będę mógł w łatwy sposób wyłączyć opisy.

Czy dzieje się coś w tej sprawie? Przyznam szczerze, że mocno komplikuje to projektowanie. Za każdym razem muszę wszystkie opisy do oznakowania poziomego przerzucać ręcznie na inne warstwy 😥 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

W poprzednim poście w tym temacie zaproponowałem pewne rozwiązanie i zapytałem o kwestie, w których mam wątpliwości.

Dnia 24.01.2018 o 15:01, kruszynski napisał:

Czyli działanie programu przyjmujemy takie:
1. Użytkownik uruchamia funkcję nazwijmy ją : przenieśopisy
2. Program wybiera z rysunku bloki opisowe i ich strzałki
3. Skąd program ma wiedzieć na jaką warstwę przenieść elementy? zakładamy na stałe np "ZNAKI-OPIS" czy pozostawiamy do wyboru ? czy tworzymy kopię tej, na której opis się znajduje ?
4. Z automatu wyłączamy wybraną warstwę ?

Nie otrzymałem odowiedzi więc nie wiem czy to właśnie tak ma działać program. Dlatego nie zajołęm się przygotowaniem rozwiązania, które może działać sprzeczenie z oczekiwaniami.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
2 minuty temu, kruszynski napisał:

W poprzednim poście w tym temacie zaproponowałem pewne rozwiązanie i zapytałem o kwestie, w których mam wątpliwości.

Nie otrzymałem odowiedzi więc nie wiem czy to właśnie tak ma działać program. Dlatego nie zajołęm się przygotowaniem rozwiązania, które może działać sprzeczenie z oczekiwaniami.

Mea culpa. Musiałem przeoczyć ten post. 😇

Moim zdaniem:

  1. Dobry sposób, może to być osobna funkcja, która będzie uruchamiana przez użytkownika.
  2. Tak, bloki opisowe i strzałki na jednej warstwie.
  3. Według mnie może być tak (nie wiem czy to jest wykonalne, bo się na tym nie znam), że program nas zapyta jak nazwać warstwę i sam ją tworzy, ewentualnie my wcześniej tworzymy taką warstwę np. ZNAKI-OPIS i wskazujemy, żeby na taką warstwę przeniósł opisy.
  4. Z tej opcji bym zrezygnował. Mi zależy na wygaszeniu warstwy z opisami dopiero po podpięciu do innego pliku jako odnośnik, więc tam muszę to zrobić ręcznie i to już nie problem.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
24 minuty temu, jacnightingale napisał:

Tak, bloki opisowe i strzałki na jednej warstwie

można tak, żeby żeby zaznaczył Pan jeden blok , a program zaznaczy wszystkie inne bloki o tej samej nazwie na tej samej warstwie. Tak będzie OK?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
35 minut temu, jacnightingale napisał:

program nas zapyta jak nazwać warstwę i sam ją tworzy

tak można. tylko z mojego doświadcznia wynika że częstotliwość popełniania literówek jest denerwująca. i bedzie powstawało zbyt dużo podobnych warstw a może tylko ja szybciej piszę niż myślę 😉

35 minut temu, jacnightingale napisał:

my wcześniej tworzymy taką warstwę np. ZNAKI-OPIS i wskazujemy, żeby na taką warstwę przeniósł opisy. 

wolałbym to rozwiązanie. tylko jak wskazać warstwę, można tak:
-  wybieramy dowolny element na warstwie docelowej - myślę, że to byłoby najłatwiejsze w użyciu, pod warukniem że coś juz na tej warstwie jest
- pojawia się okno z listą wszystkich warstw do wyboru - to byłoby łatwe w użyciu jeśli mielibyśmy mało warstw przy dużej ilości wartw pewnie już nie.
- wrzucamy np na aktualną warstwę - to byłoby najłatwiejsze do napisania ale czy funkcjonalne ?
- może jeszcze coś?

Możemy też zrobić takie combo  typu
Podaj nazwę warstwy lub [Zaznacz/Wybierz/Aktualna]:

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
27 minut temu, kruszynski napisał:

można tak, żeby żeby zaznaczył Pan jeden blok , a program zaznaczy wszystkie inne bloki o tej samej nazwie na tej samej warstwie. Tak będzie OK?

18 minut temu, kruszynski napisał:

tak można. tylko z mojego doświadcznia wynika że częstotliwość popełniania literówek jest denerwująca. i bedzie powstawało zbyt dużo podobnych warstw a może tylko ja szybciej piszę niż myślę 😉

wolałbym to rozwiązanie. tylko jak wskazać warstwę, można tak:
-  wybieramy dowolny element na warstwie docelowej - myślę, że to byłoby najłatwiejsze w użyciu, pod warukniem że coś juz na tej warstwie jest
- pojawia się okno z listą wszystkich warstw do wyboru - to byłoby łatwe w użyciu jeśli mielibyśmy mało warstw przy dużej ilości wartw pewnie już nie.
- wrzucamy np na aktualną warstwę - to byłoby najłatwiejsze do napisania ale czy funkcjonalne
- może jeszcze coś?

Możemy też zrobić takie combo  typu
Podaj nazwę warstwy lub [Zaznacz/Wybierz/Aktualna]:

Rozumiem, że ja miałbym:

  1. Wpisać komendę np. przeniesopisy
  2. Kliknąć na opis znaku + ew. linię odnoszącą (rozumiem, że nie byłoby tutaj problemu z tym, że znaki są automatycznie grupowane i tak naprawdę klikam na grupę? wolałbym nie rozbijać za każdym razem tych grup)
  3. Wybieram przykładowo opcję z tego combo - Zaznacz
  4. Klikam na jakiś element znajdujący się na docelowej warstwie 
  5. Klikam enter i to tyle.

Dobrze to zrozumiałem?

PS. Pomysł z takim combo wydaje się być bardzo dobry.

ZAPOMNIAŁBYM!

Kiedy będzie możliwość wstawienia oznakowania poziomego i pionowego na dwie odrębne warstwy? W tej chwili w ustawieniach możemy tylko rozróżnić pomiędzy projektowanym, istniejącym itd., ale mimo wszystko projektowane pionowe i poziome wskakuje na tę samą warstwę. Jest to też spore utrudnienie, bo wszystko trzeba przenosić ręcznie chcąc mieć możliwość wygaszenia oznakowania pionowego, a pozostawienia poziomego do podczytania. Byłoby to duże usprawnienie działania nakładki.

Edytowane przez jacnightingale

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
1 godzinę temu, jacnightingale napisał:

Rozumiem, że ja miałbym:

  1. Wpisać komendę np. przeniesopisy
  2. Kliknąć na opis znaku + ew. linię odnoszącą (rozumiem, że nie byłoby tutaj problemu z tym, że znaki są automatycznie grupowane i tak naprawdę klikam na grupę? wolałbym nie rozbijać za każdym razem tych grup)                                     < TAK wystarczy zaznaczyć opis. Grupa nie byłaby tu przeszkodą >
  3. Wybieram przykładowo opcję z tego combo - Zaznacz
  4. Klikam na jakiś element znajdujący się na docelowej warstwie 
  5. Klikam enter i to tyle.

Dobrze to zrozumiałem?

 
 

tak.

1 godzinę temu, jacnightingale napisał:

ZAPOMNIAŁBYM!

Kiedy będzie możliwość wstawienia oznakowania poziomego i pionowego na dwie odrębne warstwy? W tej chwili w ustawieniach możemy tylko rozróżnić pomiędzy projektowanym, istniejącym itd., ale mimo wszystko projektowane pionowe i poziome wskakuje na tę samą warstwę. Jest to też spore utrudnienie, bo wszystko trzeba przenosić ręcznie chcąc mieć możliwość wygaszenia oznakowania pionowego, a pozostawienia poziomego do podczytania. Byłoby to duże usprawnienie działania nakładki.

Trudno powiedzieć. Nie zostało to jeszcze ujęte w przewidywalnych planach

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
Teraz, kruszynski napisał:

tak.

Trudno powiedzieć. Nie zostało to jeszcze ujęte w przewidywalnych planach

Szkoda. Dla mnie jest to problem tego samego kalibru co problem z opisem, więc czekam z niecierpliwością ☺️

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
Dnia 10.05.2018 o 10:30, kruszynski napisał:

zaznaczyć jeden blok, a program zaznaczy wszystkie inne bloki o tej samej nazwie na tej samej warstwie

to też uwzględnić? czy przenosić tylko ten jeden zaznaczony blok?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
8 minut temu, kruszynski napisał:

to też uwzględnić? czy przenosić tylko ten jeden zaznaczony blok?

Najlepiej, żeby program sam przenosił wszystkie opisy i strzałki automatycznie - bez zaznaczania. Tylko z poprzedniego posta zrozumiałem, że to jest niemożliwe i musimy mu wskazać przykład bloku jaki ma przenieść.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Możliwe to jest, tylko potencjalnie narażone na komplikacje. Bo jak odróżnić blok opisowy od innych? Można w programie zapisać na stałe nazwę bloku opisowego. Ale jeśli ktoś chciałby użyć tego narzędzia w innym przypadku to nie zadziała. zaznaczenie jednego bloku wzorca chyba nie jest zbyt kłopotliwe a daje nam dużą elastyczność.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Pierwsza wersja  gotowa.

przeniesopisy.lsp


(defun C:przeniesopisy (  / selElement allElements SelLayer
	*error* )	(defun *error* ( msg / ) 
		(if (not (null msg ) )	(progn (princ "\nC:przeniesopisy:*error*: " ) (princ msg ) (princ "\n")	) )
	)
	
	
(defun AskForBlock ( label / 
	*error* )	(defun *error* ( msg / ) 
		(if (not (null msg ) )	(progn (princ "\nAskForBlock:*error*: " ) (princ msg ) (princ "\n")	) )
	)
	(setq block (SelSet:Entsel label (list (cons 0 "INSERT" ))) )
)

(defun GetCorespondingElements ( selElement / 
	LayerName BlockName Blocks Leaders Selected
	*error* )	(defun *error* ( msg / ) 
		(if (not (null msg ) )	(progn (princ "\nGetCorespondingElements:*error*: " ) (princ msg ) (princ "\n")	) )
	)
	(setq LayerName (vlax-get-property selElement 'Layer ) )
	(setq BlockName (vlax-get-property selElement 'Name ) )
	(setq Blocks (ssget "X" (list (cons 0  "INSERT") (cons 2 BlockName ) (cons 8 LayerName ) ) ) )
	
	( if (not (null Blocks) ) 
	  (progn
		(setq Selected (SelSet:ToList Blocks ) )
	  )
	)
	
	(setq Leaders (ssget "X" (list (cons 0  "MULTILEADER") (cons 8 LayerName ) ) ) )
	( if (not (null Leaders) ) 
	  (progn
		(setq Leaders (SelSet:ToList Leaders ) )
		(setq Selected (append Selected Leaders ) )
	  )
	)
	
	Selected
)
	

(defun AskForLayer ( msg / Options selString
	*error* )	(defun *error* ( msg / ) 
		(if (not (null msg ) )	(progn (princ "\nAskForLayer:*error*: " ) (princ msg ) (princ "\n")	) )
	)
	(setq Options (list "Zaznacz"  "Aktualna" ) )	; "Wybierz"
	
	(setq selString (String:Get (strcat msg " lub " (UserInput:FormatOptions Options ) ":" ) "" ) )
	(cond 
		( ( or ( null selString ) (not (= (type selString  ) 'STR))) nil)
		( ( or 	( = ( strcase selString ) (substr ( strcase ( car Options ) ) 1 1)  ) 
				( = ( strcase selString ) ( strcase ( car Options ) ) ) 
		  ) ( progn 	;	"Zaznacz"
			(setq elem (SelSet:Entsel "Wybierz element z warstwy na którą przenieść opisy" nil) )
			(setq Layer (vlax-get-property elem 'Layer ) )
		) )
		;( ( or 	( = ( strcase selString ) (substr ( strcase ( cadr Options ) ) 1 1)  ) 
		;		( = ( strcase selString ) ( strcase ( car Options ) ) ) 
		;  ) ( progn 	;	"Wybierz" 
		;	(print "eNotImplementedYet" )
		;) )
		( ( or 	( = ( strcase selString ) (substr ( strcase ( cadr Options ) ) 1 1)  ) 
				( = ( strcase selString ) ( strcase ( car Options ) ) ) 
		  ) ( progn 	;	"Aktualna"
			( setq Layer ( vlax-get-property ( vlax-get-property (vla-get-activedocument (vlax-get-acad-object) ) 'ActiveLayer ) 'Name ) )
		) )
		( T (setq Layer selString ) )
		
	)
	Layer
)
	
	(setq selElement ( AskForBlock "Wskaż blok" ))
	
	(setq allElements (GetCorespondingElements selElement ) )
	(setq SelLayer (AskForLayer "Podaj nazwę warstwy" ) )
	( Layer:Set allElements SelLayer )
)




; (defun ------ UserInput ------------ ( / ) 

(defun UserInput:FormatOptions ( Options / 
	*error* )	(defun *error* ( msg / ) 
		(if (not (null msg ) )	(progn (princ "\nUserInput:FormatOptions:*error*: " ) (princ msg ) (princ "\n")	) )
	)
	(setq Out "[" )
	(if (> (length Options) 0) 
		(setq Out (strcat "[" (car Options)  ) )
	)
	
 	(foreach % (cdr Options)
		(setq Out (strcat Out "/" % ) )
	)
	(setq Out (strcat Out "]") )
	
)



(defun String:Get (komunikat defVal / Wynik tekst 
	*error* ) 	(defun *error* ( msg / ) 
		(if (not (null msg ) )	(progn (princ "\nString:Get:*error*: " ) (princ msg ) (princ "\n")	) )
	)      
	;	(setq komunikat "podaj tekst" )
	;	(setq defVal "SLU" )
	 
	(if defVal (if (not(= defVal "")) (setq komunikat (strcat komunikat "<" defVal ">:" ) )) )
	(setq tekst(vl-catch-all-apply 'getstring (list komunikat )))
	(if (vl-catch-all-error-p tekst)
	(progn
		(prompt (vl-catch-all-error-message tekst))
		(setq Wynik nil )
	)
	(progn
	  (if (null tekst) 
		(setq Wynik defVal )
		(if (= tekst "")
			(setq Wynik defVal )
			(if (= tekst ".")
				(setq Wynik "")
				(setq Wynik tekst)
			)
		)
	  )
	)
  )
  Wynik

)

; (defun ------ Layer ------------ ( / ) 

(defun Layer:Set ( Element LayerName / 
	*error* )	(defun *error* ( msg / ) 
		(if (not (null msg ) )	(progn (princ "\nLayer:Set:*error*: " ) (princ msg ) (princ "\n")	) )
	)
	
	(if (= ( Layer:Exist LayerName ) :vlax-false ) ( Layer:Create LayerName ) )
	
	( cond 
	 ( ( = (type Element  ) 'LIST ) (progn
		(foreach % Element
			( Layer:Set % LayerName )
		)
	 ) )
	 ( ( = (type Element ) 'ENAME )  (progn
		( Layer:Set (vlax-ename->vla-object Element ) LayerName )
	 ) )
	 ( ( = (type Element ) 'VLA-OBJECT )  (progn
		(setq ans(vl-catch-all-apply 'vlax-put-property (list Element 'Layer LayerName )))
	 ) )
	 
	)
)

(defun Layer:Exist ( Name / layers ans Out 
	*error* )	(defun *error* ( msg / ) 
		(if (not (null msg ) )	(progn (princ "\nLayer:Exist:*error*: " ) (princ msg ) (princ "\n")	) )
	)
	(setq layers (vlax-get-property (vla-get-activedocument (vlax-get-acad-object) ) 'Layers )  )
	 
	(setq ans(vl-catch-all-apply 'vlax-invoke-method (list layers 'Item  Name ) ) )
	(setq Out
		(if (vl-catch-all-error-p ans )
			:vlax-false
			:vlax-true
		)
	)
	
	Out
)

(defun Layer:Create ( Name / layers ans 
	*error* )	(defun *error* ( msg / ) 
		(if (not (null msg ) )	(progn (princ "\nLayer:Create *error*: " ) (princ msg ) (princ "\n")	) )
	)
	(setq layers (vlax-get-property (vla-get-activedocument (vlax-get-acad-object) ) 'Layers )  )
	(setq ans (vl-catch-all-apply 'vlax-invoke-method (list layers 'Add Name ) ) )
	(if (vl-catch-all-error-p ans)
		nil
		ans
	)
)

(defun Layer:Purge ( Name / layers ans Out 
	*error* )	(defun *error* ( msg / ) 
		(if (not (null msg ) )	(progn (princ "\nLayer:Purge:*error*: " ) (princ msg ) (princ "\n")	) )
	)
	(setq layers (vlax-get-property (vla-get-activedocument (vlax-get-acad-object) ) 'Layers )  )
	 
	(setq layer (vl-catch-all-apply 'vlax-invoke-method (list layers 'Item  Name ) ) )
	(if (not (vl-catch-all-error-p layer ))
		(vl-catch-all-apply 'vlax-invoke-method (list layer 'Erase ) )
	)
	nil
)

; (defun ------ SelSet ------------ ( / ) 

(defun SelSet:ToList (selset / Wynik ileelementow i 
	*error* ) 	(defun *error* ( msg / ) 
		(if (not (null msg ) )	(progn (princ "\nSelSet:ToList:*error*: " ) (princ msg ) (princ "\n")	) )
	)      
 (if selset (progn
 (setq ileelementow(sslength selset) )
 (setq i 0 )
 (repeat ileelementow
	(setq Wynik (append Wynik (list (vlax-ename->vla-object(ssname selset i) ) )))
	(setq i (1+ i ))
 )
 ))
 Wynik
)

(defun SelSet:Entsel (tresc filter / OldNoMutt MSel OutVal  
	*error* ) 	(defun *error* ( msg / ) 
		(if (not (null msg ) )	(progn (princ "\nSelSet:Entsel:*error*: " ) (princ msg ) (princ "\n")	) )
	)      

	(setq tresc (strcat "\n" tresc ": ") )
	(prompt tresc )
	
	(setq OldNoMutt (getvar 'NOMUTT))	
	(setvar 'NOMUTT 1)	
	(setq MSel
		(if (null filter)
			(vl-catch-all-apply 'ssget (list ":S:E" ))
			(vl-catch-all-apply 'ssget (list ":S:E" filter ))
		)
	)
		
	(setvar 'NOMUTT OldNoMutt )
	(if (vl-catch-all-error-p MSel)
	(progn
		(prompt (vl-catch-all-error-message MSel))
	)
	(progn
	  (if MSel (progn		
		(setq OutVal (vlax-ename->vla-object  (ssname MSel 0)) )			
	  ))
	)
	)
	OutVal
)

 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
Dnia 14.05.2018 o 11:04, kruszynski napisał:

Pierwsza wersja  gotowa.

przeniesopisy.lsp

Dopiero teraz miałem okazję przetestować. Niestety, skrypt przenosi również linie odnoszące znaków pionowych na inną warstwę.

Mój tok postępowania:

  • uruchamiam skrypt
  • zaznaczam opis przy oznakowaniu poziomym
  • wybieram opcję Zaznacz
  • i w tym momencie skrypt przenosi na odpowiednią warstwę wszystkie opisy w oznakowaniu poziomym (tak jak powinien) i linie odnoszące (tylko linie - bez opisów) z oznakowania pionowego (tego już nie powinien robić)

Proszę o analizę i ewentualne poprawki.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

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ę