Vytisknout stránku | Zavřít okno

Styl písma

Vytištěno z: CAD Fórum
Kategorie: Autodesk - stavebnictví, strojírenství, CAD/GIS
Název fóra: CAD programování
Popis fóra: Otázky programování - nadstavby a utility pro CAD a GIS aplikace Autodesk (VBA, AutoLISP, ARX/C++, .Net, JavaScript, Python, MEL...)
URL: https://www.cadforum.cz/forum/forum_posts.asp?TID=900
Datum vytištění: 13.kvě.2026 v 06:38


Téma: Styl písma
Odeslal: PepaR
Předmět: Styl písma
Datum odeslání: 25.kvě.2005 v 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...
 
http://www.cadforum.cz/forum/uploads/PepaR/2005-05-25_024657_kotvysk.lsp - 2005-05-25_024657_kotvysk.lsp
http://www.cadforum.cz/forum/uploads/PepaR/2005-05-25_024729_VK1.dwg - 2005-05-25_024729_VK1.dwg
 
S pozdravem a předem díky za pomoc
Pepa R.



Odpovědi:
Odeslal: Seiner
Datum odeslání: 25.kvě.2005 v 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 - http://www.aac-solutions.cz/apps/areautil/areautilcz.htm )



Odeslal: Vladimír Michl
Datum odeslání: 25.kvě.2005 v 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áš  http://www.aac-solutions.cz/livelabel - LiveLabel (viz třetí animovaná ukázka) nebo ve vyšších verzích text.pole vložené do atributu



-------------
Vladimír Michl (moderátor)
ARKANCE CZ - https://arkance.world - arkance.world
(podpora viz helpdesk.arkance-systems.cz)


Odeslal: Seiner
Datum odeslání: 25.kvě.2005 v 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?" :-)



Odeslal: PepaR
Datum odeslání: 25.kvě.2005 v 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?


Odeslal: PepaR
Datum odeslání: 25.kvě.2005 v 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.


Odeslal: Seiner
Datum odeslání: 25.kvě.2005 v 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))
)



Odeslal: Vladimír Michl
Datum odeslání: 25.kvě.2005 v 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).

-------------
Vladimír Michl (moderátor)
ARKANCE CZ - https://arkance.world - arkance.world
(podpora viz helpdesk.arkance-systems.cz)


Odeslal: PepaR
Datum odeslání: 25.kvě.2005 v 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é.
 


Odeslal: Vladimír Michl
Datum odeslání: 25.kvě.2005 v 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.

-------------
Vladimír Michl (moderátor)
ARKANCE CZ - https://arkance.world - arkance.world
(podpora viz helpdesk.arkance-systems.cz)


Odeslal: PepaR
Datum odeslání: 25.kvě.2005 v 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á.
 
http://www.cadforum.cz/forum/uploads/PepaR/2005-05-25_162812_VK_TPOLE.dwg - 2005-05-25_162812_VK_TPOLE.dwg
 



Vytisknout stránku | Zavřít okno