Zobrazit plnou verzi příspěvku: Styl písma

PepaR
25.05.2005, 02:47
Dobrý den, při tvorbě lispu který mi vkládá jako bloky výškové kóty s atributy do kterých se načítají hodnoty y-nových souřadnic. Funkce funguje bez problémů až na písmo, v lispu zvolím aby se jednalo o romans.shx, který standardně používá pro oddělení desetinných míst čárku avšak při vložení bloku mám jako oddělovač tečku. A jetě jěden dotaz na závěr, nevědel by někdo jak nadefinovat funkci, která mi aktualizuje atribut výšky při posunu vkládaného bodu bloku? Soubory příkládám...
 
2005-05-25_024657_kotvysk.lsp
2005-05-25_024729_VK1.dwg
 
S pozdravem a předem díky za pomoc
Pepa R.PepaR38497.1165972222

Seiner
25.05.2005, 07:11
Nezlobte se, ale ve Vasem dotazu se trosku spatne orientuje. Neskodilo by venovat pozornost subjektu a pak si dotaz po sobe precist.
IMHO problem nesouvisi se stylem pisma. Funkce RTOS proste vraci znakovou reprezentaci cisla, ktera v AutoCADu neni lokalizovana (souradnice preci taky zadavate s teckou). Pokud tam chcete mit carku, upravte text pred vlozenim. Treba nejakou takovouhle funkci:
(defun cz(string / ii,l,str) (if (/= string "")(progn   (setq l (strlen string) ii 1 str string string "") (while (<= ii l)    (if (= (substr str ii 1) ".")        (setq string (strcat string ","))        (setq string (strcat string (substr str ii 1)))     )    (setq ii (1+ ii)))))(setq string string))
(Druhou cast dotazu nevim - to bude vyssi divci :-) (reaktor? http://www.aac-solutions.cz/apps/areautil/areautilcz.htm)

Vladimír Michl
25.05.2005, 08:01
proč tak složitě? nestačilo by:(vl-string-subst "," "." puvodnicislo) ?
myslíte dynamický popis aktuální hodnoty Z? to umí např. náš LiveLabel (viz třetí animovaná ukázka) nebo ve vyšších verzích text.pole vložené do atributu

Seiner
25.05.2005, 08:14
Protoze jsem se naucil AutoLISP ve verzi 10 a tam jsem ustrnul :-) "Ale tu pevnou fázi jsem snad popsal dobre, pake Koudelko?" :-)

PepaR
25.05.2005, 09:27
Je pravda, že nejsem romanopisec, jen technik, ale snažil jsme se to vyjádřit nejlépe jak jsme uměl. Každopádně díky za odpověď.
 
S tím polem mě to nenapadlo, ale nevím jakou proměnou , popř v jakým zápisem bych získal a vypsal požadovanou souřadnici?

PepaR
25.05.2005, 13:25
ad) A jetě jěden dotaz na závěr, nevědel by někdo jak nadefinovat funkci, která mi aktualizuje atribut výšky při posunu vkládaného bodu bloku? Soubory příkládám...
 
Tím byla myšlena funkce, ktery by po aktivaci přepočítala hodnoty souřadnic vkládaných výšek podle zvolenné nulové hladiny a aktualizovala atributy. Nemám na mysli aktualizaci v reálnem čase jako je tomu u LiveLabel.

Seiner
25.05.2005, 13:40
Asi bych postupoval:
- vytvořit výběrovou množinu všech instancí daného bloku,
- v cyklu načítat souřadnice bloku, mazat je a vkládat s novými atributy.
pro inspiraci ukázka něčeho podobného:
;OTOC program pro otoceni cisel a znacek uzlu a cisel prvku do smeru pohledu ;*********************************************************** *****************(setvar "CMDECHO" 0)(setq mer(getreal "\nUdej měřitko pro písmo: "))(setq skup (ssget "X" '((0 . "INSERT") (2 . "AUTODEF"))))(setq sk1 (ssget "X" '((0 . "TEXT") (8 . "CISLAP"))))(setq pocet (sslength skup)      poc1  (sslength sk1))
;otaceni bloku AUTODEF - znacek uzlu(setq i 0)(command "_UCS" "_V")(setvar "ATTDIA" 0)(While (< i pocet)(setq m (ssname skup i))(setq m1 (entnext m)) ;cislo - atribut(setq dz (entget m))(setq dz1 (entget m1))(setq cislo (cdr(assoc 1 dz1))      bod  (trans (cdr(assoc 10 dz))m 1)      xmer (cdr (assoc 41 dz))      ymer (cdr(assoc 42 dz)))(command "_ERASE" m "")(command "_INSERT" "AUTODEF" bod (* mer xmer) (* mer ymer) "0" cislo)(setq i (+ 1 i)))

Vladimír Michl
25.05.2005, 13:54
Nevím jakou používáte verzi AutoCADu, ale od verze 2005 na to lze použít dynamické textové pole, od verze 2006 i s výpočty (např. korekci na srovnávací rovinu).

PepaR
25.05.2005, 14:57
 
Docela rád bych využil dynamického textového pole, ale nevím jak to přesně nadefinovat... V CAD Tipech uvadíte následující syntaxi %<\AcObjProp Object(%<\_ObjId 2130022304>%).Coordinates \f "%pt2">% nicméně nevím jak to přesně zakomponovat do bloku výškové kóty tak, aby mi to vypsalo souřadnici referenčního bodu bloku. Jak fungují a princip vkládání textový polí znám avšak toto mi není jasné.
 

Vladimír Michl
25.05.2005, 15:27
Toho tipu si nevšímejte, ten řeší jen divoké speciality - normálně vložte pole standardní funkcí AutoCADu a vyberte vlastnost objektu (vloženého bloku) - vkládací bod, Z (nebo Y) souřadnice.

PepaR
25.05.2005, 16:27
Nu dobrá, ale pokud použiji příkaz TPOLE, řeším následující problémy:
 
1) Při vložení odpovidájicího bloku se mi načte správná hodnota Y-nové souřadnice referenčního bodu bloku, nicméně při změne výškové úrovně bloku a následné aplikaci příkazu AKTUALIZUJTPOLE, se mi hodnota výšky neopraví.
 
2) Formát desetinných míst nevyhovuje a v dialogu pro editaci pole nelze nikde nastavit jiné než aktuální jednotky. A obvzláště u případu +-0,000 je každá rada drahá.
 
2005-05-25_162812_VK_TPOLE.dwg
 PepaR38497.7883449074