Zobrazit plnou verzi příspěvku: měřítko
Dobrý den, Jak zvětším měřítko výkresu pouze v jedné ose, ( konkrétně se mi jedná o průhyb venkovního vedení, kdy v ose X musím zvětšit měřítko, aby byl znázorněněný průhyb vedení zřetelný na výkresu)
předem děkuji
Vladimír Michl
07.05.2008, 19:40
Popis možností najdete v tipu (VIP):
http://www.cadforum.cz/cadforum/qaID.asp?tip=2124
Dobrý den, všiml sem si toho, ale nemám ACAD od vaší firmy :o(((
Nevím co je v tipu, ale snadno lze toho docílit, když si entity převedete na blok a ten může mít v každé ose jiné měřítko. PepaR2008-05-08 19:38:22
to ano, ale něco jednodušího? nejaká utilitka?
Byla by byla, trošku jsem pohledal na fórech a přikládm výsledek - nezkoušel jsem, tak kdyžtak napište zda je funkční.
uploads/20080512_193718_Scaleaxis.lsp PepaR2008-05-12 19:40:57
nějak mi to nejde rozchodit, načetl sem lips a pakl se snažil přijít na to jak dostat měřítko jen v jedné ose :o((( nevíte jak by to mělo pracovat?
Sedláček
13.05.2008, 13:04
Doplnil jdem nějaká podtržítka pro angilcké příkazy a parametry.
Funguje to tak, že vytvoří pomocný blok (_block..), vloží ho se změněným měřítkem (_insert..), rozbije ho (_explode..) a vyčistí výkres (_purge..)
;;;SCALEAXIS.LSP
;--------------------------------------------------; ERROR TRAPPING;--------------------------------------------------
(defun errtrap (msg) (cond ((not msg)) ( (member msg '("Function cancelled" "quit / exit abort")) (command "undo" "") ) ( (princ (strcat "\nError: " msg)) (command "undo" "") ) );cond);defun
;--------------------------------------------------; MAIN ROUTINE;--------------------------------------------------
(defun c:scaleaxis (/ *error* *ss1 bspt ax mult refpt refdx newdx)
(command "._undo" "_end" "._undo" "_begin")(setq *error* errtrap)
(setq ss1 (ssget))(setq bspt (getpoint "\nSelect basepoint: "))(initget "X Y Z")(if (not (setq ax (getkword "\nSpecify axis to scale: <X> ")) );not (setq ax "X"));if
(if (not (setq mult (getreal "\nEnter scale factor or <Reference>: ")) );not (progn (setq refpt1 (getpoint "\nSpecify reference length: ")) (setq refdx (getdist refpt1 "\nSpecify second point: ")) (setq newdx (getdist refpt1 "\nSpecify new length: ")) (setq mult (/ newdx refdx)) );progn);if
(setvar "expert" 2)(setvar "explmode" 1)(command "._-block" "SCALETEMP" bspt ss1 "")(command "._-insert" "SCALETEMP" ax mult bspt "0")(command "._explode" "_last" "")(command "._-purge" "_blocks" "SCALETEMP" "_n")(setvar "expert" 1)
(command "._undo" "_end")
(princ)(*error* nil))
dobrý den, zatím sem neměl možnost to vyzkoušet, chtěl bych se¨zeptat, když nahraju lips jak pak postupuju s prvkem, abych si určil kterou osu chci v měřítku zvětšit?
Pri spustenem lispu si vyberete osu (X, Y, Z) a pak meritko.
zmente si radku :
(setq ax (getkword "\nSpecify axis to scale: <X> "))
na
(setq ax (getkword "\nSpecify axis to scale: [osa X/osa Y/osa Z] <X> "))
Mate tak hned vypsany jak moznosti volby tak defaultni nastaveni.
vubec se mi to nedaří rozběhat, po nactení lispu, do příkazový řádky napíšu jakou osu chci dám měřítko, ale pořád se mi hejbe ve dvou osách zároveň.
?
jersey2008-05-17 19:11:46
V pátek jsem to zkoušel a funkce šlapala bez problémů. Přikládám upravenou a lokalizovanou verzi - viz příspěvky alfreda a pana Sedláčka.
uploads/20080518_082700_SCALEAXIS.lspPepaR2008-05-18 08:27:30
ak ted už vážně netušim, v nástrojích načtu AUTOlips, vyderu požadovaný lips, načtu ho, možnostech mám nastavenou cestu, a pak by to mělo normálně fungovat? do příkazový řádky napsat osu, dám měřítko a objekt by se měl zvětšit v požadovaný ose. Nezapomněl sem někde na něco ????
1) Načtete lisp
2) Spustíte jej příkazem SCALEAXIS
3) Vyberete objekty
4) Zadáte osu
5) Zadáte měřítko
jasný , sem ho zapomněl spustit, díky moc!