Diskuzní fórum a databáze tipů a utilit pro AutoCAD, Inventor, Revit a další produkty Autodesk - od firmy CAD Studio [www.cadforum.cz]
Česky Slovensky English Deutsch
Přihlášení:
▶ Registrace

 právě nás čte: 4810 
RSS tipy RSS kanál - CAD tipy
RSS diskuze RSS kanál - CAD diskuze

Diskuze Diskuzní fórum, poradna

NápovědaCAD diskuze, rady, výměna zkušeností

CAD Fórum - Homepage Veřejné diskuzní fórum k CAD aplikacím - ptejte se na libovolné otázky týkající se oboru CAx, podělte se o vaše znalosti a zkušenosti s programy AutoCAD, Inventor, Revit, Fusion 360, 3ds Max a s dalšími CAD aplikacemi. Zaregistrujte se nebo se přihlašte a zašlete váš příspěvek do odpovídajícího fóra. Viz další informace o CAD Fóru. Nechcete se registrovat? Zeptejte se v naší Facebook poradně.
Fórum nenahrazuje technický support firmy CAD Studio - přímá podpora pro zákazníky funguje na helpdesk.cadstudio.cz
  FAQ FAQ  Prohledat fórum   Události   Registrovat Registrovat  Přihlásit Přihlásit

Hromadná změna měřítek čar

 Odpovědět Odpovědět archiv
Autor
Matejka63 Zobrazit panel
Diskutér
Diskutér

Přihlášen: 23.led.2015
Lokalita: ČR (Pha)
Používám:
Autocad 2011
Stav: Offline
Bodů: 20
Možnosti příspěvku Možnosti příspěvku   Poděkování (0) Poděkování0   Citace Matejka63 Citace  OdpovědětOdpověď Přímý odkaz na tuto zprávu Téma: Hromadná změna měřítek čar
    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?
Zpět nahoru
Vladimír Michl Zobrazit panel
Moderátor
Moderátor
Avatar
CAD Studio a.s.

Přihlášen: 09.zář.2004
Lokalita: ČR (JČ)
Používám:
Dodáváme produkty Autodesk
Stav: Offline
Bodů: 17400
Možnosti příspěvku Možnosti příspěvku   Poděkování (0) Poděkování0   Citace Vladimír Michl Citace  OdpovědětOdpověď Přímý odkaz na tuto zprávu Zasláno: 03.led.2018 v 13:32
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?
Vladimír Michl (moderátor)
CAD Studio a.s. - www.cadstudio.cz
(podporu najdete na helpdesk.cadstudio.cz)
Zpět nahoru
Matejka63 Zobrazit panel
Diskutér
Diskutér

Přihlášen: 23.led.2015
Lokalita: ČR (Pha)
Používám:
Autocad 2011
Stav: Offline
Bodů: 20
Možnosti příspěvku Možnosti příspěvku   Poděkování (0) Poděkování0   Citace Matejka63 Citace  OdpovědětOdpověď Přímý odkaz na tuto zprávu Zasláno: 03.led.2018 v 14:35
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..


Zpět nahoru
Vladimír Michl Zobrazit panel
Moderátor
Moderátor
Avatar
CAD Studio a.s.

Přihlášen: 09.zář.2004
Lokalita: ČR (JČ)
Používám:
Dodáváme produkty Autodesk
Stav: Offline
Bodů: 17400
Možnosti příspěvku Možnosti příspěvku   Poděkování (0) Poděkování0   Citace Vladimír Michl Citace  OdpovědětOdpověď Přímý odkaz na tuto zprávu Zasláno: 03.led.2018 v 14:52
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:
Vladimír Michl (moderátor)
CAD Studio a.s. - www.cadstudio.cz
(podporu najdete na helpdesk.cadstudio.cz)
Zpět nahoru
Matejka63 Zobrazit panel
Diskutér
Diskutér

Přihlášen: 23.led.2015
Lokalita: ČR (Pha)
Používám:
Autocad 2011
Stav: Offline
Bodů: 20
Možnosti příspěvku Možnosti příspěvku   Poděkování (0) Poděkování0   Citace Matejka63 Citace  OdpovědětOdpověď Přímý odkaz na tuto zprávu Zasláno: 03.led.2018 v 15:48
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.

Zpět nahoru
johny Zobrazit panel
TOP uživatel
TOP uživatel

Přihlášen: 24.led.2006
Lokalita: ČR (JM)
Používám:
AutoCAD Civil 3D 2016
Stav: Offline
Bodů: 1249
Možnosti příspěvku Možnosti příspěvku   Poděkování (1) Poděkování1   Citace johny Citace  OdpovědětOdpověď Přímý odkaz na tuto zprávu Zasláno: 03.led.2018 v 16:36
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
;;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
Zpět nahoru
Matejka63 Zobrazit panel
Diskutér
Diskutér

Přihlášen: 23.led.2015
Lokalita: ČR (Pha)
Používám:
Autocad 2011
Stav: Offline
Bodů: 20
Možnosti příspěvku Možnosti příspěvku   Poděkování (0) Poděkování0   Citace Matejka63 Citace  OdpovědětOdpověď Přímý odkaz na tuto zprávu Zasláno: 03.led.2018 v 17:01
Díky MOOC, nyní to funguje bezvadně SmileSmileSmile

Zpět nahoru
Matejka63 Zobrazit panel
Diskutér
Diskutér

Přihlášen: 23.led.2015
Lokalita: ČR (Pha)
Používám:
Autocad 2011
Stav: Offline
Bodů: 20
Možnosti příspěvku Možnosti příspěvku   Poděkování (0) Poděkování0   Citace Matejka63 Citace  OdpovědětOdpověď Přímý odkaz na tuto zprávu Zasláno: 04.led.2018 v 07:31
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
Zpět nahoru

Pro technickou podporu CAD
kontaktujte Helpdesk

Příbuzné CAD tipy:
Tip 4877:VIPHromadné přenastavení jednotek ve všech DWG výkresech (nesprávné měřítko vkládání).
Tip 2943:Jak zvětšit nebo natočit několik bloků okolo jejich individuálních vkládacích bodů?
Tip 6978:Jak zvětšit či zmenšit všechny texty výkresu bez změny polohy?
Tip 3581:Volba "Měřítko i pro tloušťku čar" je zašedlá. Jak zvětšit/zmenšit tloušťky čar?
Tip 10854:Dynamické nastavení měřítka typu čáry tažením myší.
Tip 9798:VIPiLogic pravidlo pro automatické směrování tisku (formát/tiskárna).


 Odpovědět Odpovědět

Přejít na fórum Oprávnění fóra Zobrazit panel



Stránka byla vygenerována za 0,875 sekund.