Již 10.000+ CAD tipů.
Přes 118.500 registrovaných u nás, celkem 1.093.000 registrovaných (CZ+EN), přes 53.000 CAD/BIM bloků.
Vyzkoušejte nový přesný Inženýrský kalkulátor.
Kompletní příkazy AutoCADu a proměnné AutoCADu 2026.
Diskuzní fórum, poradna
?CAD diskuze, rady, výměna zkušeností

Fórum nenahrazuje technický support firmy ARKANCE (CAD Studio) - přímá podpora pro zákazníky funguje na helpdesk.arkance-systems.cz
|
Odpovědět ![]() |
archiv |
Autor | |
Matejka63 ![]() Diskutér ![]() Přihlášen: 23.led.2015 Lokalita: ČR (Pha) Používám: Autocad 2011 Stav: Offline Bodů: 20 |
![]() Zasláno: 03.led.2018 v 12:34 |
Dobrý den,
občas potřebujeme ve stavebním výkrese (využívaném jako xref) upravit globální měřítko tak, aby bylo v souladu s naším globálním měřítkem ve zpracovávané profesi. Rád bych se proto zeptal, zda existuje nějaký lsp program, případně jiná funkce, která "oběhne" ve výkrese všechny úsečky, křivky, oblouky atd a přenásobí původní měřítko čar určitou zvolenou konstantou tak, aby zobrazení čar po změně globálního měřítka bylo opět OK? |
|
![]() |
|
Vladimír Michl ![]() Profil člena
Odeslat soukromou zprávu
Najít příspěvky člena
Navštívit stránky člena
Přidat do seznamu známých
Moderátor ![]() ![]() Arkance Systems Přihlášen: 09.zář.2004 Lokalita: ČR (JČ) Používám: Implementujeme řešení Autodesk Stav: Offline Bodů: 21899 |
![]() |
To by sice asi šlo udělat, ale není to zbytečná komplikace? V tom xrefu jsou opravdu čáry individuálně nastaveny na hodně různých měřítek typů čar? Nestačilo by globální LTSCALE/PSLTSCALE a VISRETAIN?
|
|
![]() |
|
Matejka63 ![]() Diskutér ![]() Přihlášen: 23.led.2015 Lokalita: ČR (Pha) Používám: Autocad 2011 Stav: Offline Bodů: 20 |
![]() |
Děkuji za rychlou reakci,
pokud to ale dobře chápu, LTSCALE mi mění v podstatě globální měřítko, tudy cesta asi nevede (nebo ji neznám) - čáry se mi zobrazí vždy dle globálního měřítka výkresu naší profese, globální měřítko xrefu nemá na jejich zobrazení v podstatě žádný vliv. PSLTSCALE změní "zaškrtávátko" "Použít měřítko výkresového souboru", to, pokud jej nechám zaškrtnuté, (tedy PSLTSCALE=1) mi způsobí pro mě nevyhovující vykreslení čar ve výkresovém prostoru, kde jsou výřezy zpravidla 1:50. VISRETAIN jsem zatím nepoužíval, ale podle toho, co jsem si o této proměnné zatím přečetl se mi nezdá, že by byla řešením problému. Standardní stavební podklad opravdu obsahuje zcela nahodilou sestavu typů čar a jejich měřítek, která jsou jen upravena tak, aby výsledné zobrazení vyhovovalo autorovi výkresu. Globální měřítko bohužel má skoro každý jiný. Musíme pracovat s podklady různých kanceláří, a ty mají různé zvyklosti. Je nutné tedy přes "Vybrat podobné" nebo "Rychle vybrat" najít množinu příslušných čar a upravit jejich měřítko nějakým pevným koeficientem (poměrem globálních měřítek). To bych rád zautomatizoval, protože je to docela pracné a při každé změně podkladů se tato procedura musí opakovat. Pokud program neexistuje, rád bych oslovil někoho, kdo jej zvládne napsat, případně mi pomůže, pokud bych se do toho pouštěl sám.. |
|
![]() |
|
Vladimír Michl ![]() Profil člena
Odeslat soukromou zprávu
Najít příspěvky člena
Navštívit stránky člena
Přidat do seznamu známých
Moderátor ![]() ![]() Arkance Systems Přihlášen: 09.zář.2004 Lokalita: ČR (JČ) Používám: Implementujeme řešení Autodesk Stav: Offline Bodů: 21899 |
![]() |
Možných kombinací implicitních a přiřazených měřítek typů čar je hodně. Pokud chcete prostě individuálně přiřazená měřítka vynásobit nějakým koeficientem, můžete použít LISP kód z našeho anglického fóra:
Pro dynamickou změnu měřítka (vizuální) lze použít také DynLTscale (DLTS) - viz Download a tip:
|
|
![]() |
|
Matejka63 ![]() Diskutér ![]() Přihlášen: 23.led.2015 Lokalita: ČR (Pha) Používám: Autocad 2011 Stav: Offline Bodů: 20 |
![]() |
Moc děkuji za výborný typ, funguje to, jen mě překvapilo, že funkce LSR se dá aplikovat v daném dwg pouze jednou, podruhé už nefunguje, přestože se zdá, že vše proběhlo korektně, měřítka čar se již podruhé nezmění - ale i to je velká pomoc..
Nepomůže ani znovunačtení dwg nebo lsp. Pokusím se najít problém v lsp, ale je to na mě dost pokročilé, pochybuji, že na to přijdu. |
|
![]() |
|
johny ![]() TOP uživatel ![]() Přihlášen: 24.led.2006 Lokalita: ČR (JM) Používám: C3D 2024 Stav: Offline Bodů: 1741 |
![]() |
Jeden řádek kódu je tam blbě, teď to fungovalo jen když ltscale bylo defaultně 1.
Trochu to otestujte, jestli to opravdu funguje jak má. ;;change linetype scale by a factor ;;original version: http://www.cadforum.cz/forum_en/forum_posts.asp?tid=11259&title=change-linetype-scale-by-a-factor ;;modified by will garmer to work on selection set instead of single object 2015-07-20 ;;fixed Johny 2018-01-03 (defun c:lsr (/ ss lts_fac count old_val new_val e) ;;===================================================================================== ;;main body of c:lsr ;;get the selection set (setq ss (ssget)) ;;get the scale factor (if (not old_lts_fac) (setq old_lts_fac 1)) (setq lts_fac (getreal (strcat "\nMultiply linetypescale by factor <" (rtos old_lts_fac) ">: "))) (if (= lts_fac nil) (setq lts_fac old_lts_fac)) (setq old_lts_fac lts_fac) ;;do the deed (terpri) (setq count 0) (while (< count (sslength ss)) (princ (strcat "\n--> Processing entity no.:" (itoa (+ 1 count)) " of " (itoa (sslength ss)) "... ")) (setq e (entget (ssname ss count))) ;if the object already has a ltscale ;then multiply it by the factor ;else set the new scale equal to the factor (if (assoc 48 e) ;then (progn (setq old_val (cdr (assoc 48 e)) new_val (* lts_fac old_val)) (setq e (subst (cons 48 new_val) (assoc 48 e) e)) ;; johny fixed 2018-01-03 (entmod e) (entupd (ssname ss count)) );progn then ;else (progn (setq new_val (cons 48 lts_fac)) (setq e (append e (list new_val))) (entmod e) (entupd (ssname ss count)) );progn else );end if ;increase the count by one to move on to the next object (setq count (+ count 1)) );while ;end the program gracefully (prompt (strcat "\nEntity linetypescale of **" (itoa (sslength ss)) "** selected objects scaled by a factor of <" (rtos lts_fac) ">. ")) (princ) );defun c:lsr |
|
![]() |
|
Matejka63 ![]() Diskutér ![]() Přihlášen: 23.led.2015 Lokalita: ČR (Pha) Používám: Autocad 2011 Stav: Offline Bodů: 20 |
![]() |
Díky MOOC, nyní to funguje bezvadně
![]() ![]() ![]() |
|
![]() |
|
Matejka63 ![]() Diskutér ![]() Přihlášen: 23.led.2015 Lokalita: ČR (Pha) Používám: Autocad 2011 Stav: Offline Bodů: 20 |
![]() |
Maličko jsem to doplnil, aby se faktor nemusel dopočítávat ručně, ale zadali jsme rovnou nové globální měřítko:
;;change linetype scale by a factor ;;original version: http://www.cadforum.cz/forum_en/forum_posts.asp?tid=11259&title=change-linetype-scale-by-a-factor ;;modified by will garmer to work on selection set instead of single object 2015-07-20 ;;fixed Johny 2018-01-03 ;;modified by Matejka63 to change the variable "LTSCALE" easily 2018-01-04 (defun c:lsr (/ ss lts_fac count old_val new_val e old_lts new_lts) ;;===================================================================================== ;;main body of c:lsr ;;get the selection set (setq ss (ssget)) ;;get the scale factor by a NEW LTSCALE (setq old_lts (getvar "LTSCALE")) (setq new_lts (getreal (strcat "Insert a NEW LTSCALE <" (rtos old_lts) ">: "))) (if (= new_lts nil) (setq new_lts old_lts)) (setvar "LTSCALE" new_lts) (setq lts_fac (/ old_lts new_lts)) ;;do the deed (terpri) (setq count 0) (while (< count (sslength ss)) (princ (strcat "\n--> Processing entity no.:" (itoa (+ 1 count)) " of " (itoa (sslength ss)) "... ")) (setq e (entget (ssname ss count))) ;if the object already has a ltscale ;then multiply it by the factor ;else set the new scale equal to the factor (if (assoc 48 e) ;then (progn (setq old_val (cdr (assoc 48 e)) new_val (* lts_fac old_val)) (setq e (subst (cons 48 new_val) (assoc 48 e) e)) ;; johny fixed 2018-01-03 (entmod e) (entupd (ssname ss count)) );progn then ;else (progn (setq new_val (cons 48 lts_fac)) (setq e (append e (list new_val))) (entmod e) (entupd (ssname ss count)) );progn else );end if ;increase the count by one to move on to the next object (setq count (+ count 1)) );while ;end the program gracefully (prompt (strcat "\nEntity linetypescale of **" (itoa (sslength ss)) "** selected objects scaled by a factor of <" (rtos lts_fac) ">. ")) (princ) );defun c:lsr |
|
![]() |
Pro technickou podporu CAD
kontaktujte Helpdesk
Odpovědět ![]() |
|
Přejít na fórum | Oprávnění fóra ![]() Nemůžete vytvářet nová témata v tomto fóru Nemůžete odpovídat na témata v tomto fóru Nemůžete vymazávat vaše příspěvky v tomto fóru Nemůžete upravovat vaše příspěvky v tomto fóru Nemůžete vytvářet ankety v tomto fóru Nemůžete hlasovat v anketách v tomto fóru |
Stránka byla vygenerována za 0,535 sekund.