Diskuzní fórum, poradna
CAD diskuze, rady, výměna zkušeností |
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 Arkance Systems (CAD Studio) - přímá podpora pro zákazníky funguje na helpdesk.cadstudio.cz
natočení atributu |
Odpovědět | Stránka <12 archiv |
Autor | |
Kackac
TOP uživatel Přihlášen: 11.úno.2006 Lokalita: ČR (Pha) Používám: AutoCAD Stav: Offline Bodů: 469 |
Zasláno: 29.zář.2007 v 04:12 |
Dyť já sem přece tele! Zapomněla jsem tam dát cyklus a proto jel (entsel) donekonečna, otázku 2 mám tedy z krku a F3 vypadá teď takhle...
jen by mě zajímalo, jestli (/= blka "SEQEND"...) je to samé jako (= "ATTRIB"...) a jestli ano, platí to pouze pro tento případ nebo je SEQEND univerzální a platí i pro jiné entity než atributy? ;____FUNKCE-3____natoci vsechny atributy vybraneho bloku (jiz drive vlozeneho s blbe natocenymi atributy nebo po battman) na 0° (defun c:el_rozv_natoc () (setq blok (car (entsel "Vyber blok: "))) ;vyber bloku a ulozeni jeho jm.entity do prom. "blok" (setq att (vrat_atributy blok)) ;vytvori seznam atributu vybraneho bloku podle predchozi fce "vrat_atributy" a ulozi ho do seznamu "att" (setq blk blok) ;ulozeni jmena vybraneho bloku do prom blk (while (/= blka "SEQEND" (cdr (assoc 0 (setq blka (entget (entnext blk)))))) ;cyklus while probiha dokud mu nedojdou atributy vybraneho bloku (setq atr (entnext blk)) ;postupne atributy vybraneho bloku (setq edata (entget atr)) ;data atributu (setq oldrot (assoc 50 edata)) ;podseznam obsahujici klic 50 (natoceni) (setq newrot (cons 50 0.0)) ;zkonstruovani noveho podseznamu klice 50 (setq edata (subst newrot oldrot edata)) ;nahrazeni stareho podseznamu novym (natoceni 0) (entmod edata) ;modifikace seznamu (entupd blk) ;regenerace slozene entity (bloku, krivky...) (setq blk atr) ) ) |
|
Kackac
|
|
chlebovsky
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
Zasloužilý člen Přihlášen: 18.čer.2007 Lokalita: ČR (JM) Používám: Autocad R9 - 2022 Stav: Offline Bodů: 112 |
Zasláno: 29.zář.2007 v 10:24 |
Co se týče toho samotného vrací na konci funkce : tak to se používá právě když potřebujeme zavolat nějakou funkci, a potřebujeme aby ta funkce něco vrátila. Uvedu na příkladu.
Řekněme že si chceme vytvořit funkci na součet dvou čísel. Tudíž vstupní parametry budou CIS1 a CIS2, funkce se bude jmenovat SOUCET a funkce nám vrátí VYSLEDEK
funkce by pak vypadala takto :
(defun SOUCET (CIS1 CIS2 / VYSLEDEK) ;;; vstup je CIS1 a CIS2
(setq VYSLEDK (+ CIS1 CIS2))
VYSLEDEK
)
pak můžeme tuto funkci volat takto
(setq X (SOUCET 10.0 20.0))
právě ta poslední proměnná zaručí aby funkce vrátila nějakou hodnotu a proto ji můžeme hned něčemu přiřadit. Takže přiřadíme X.
Pakmáte v dalším dotazu (while..... červený, to asi myslíte tím že tam je něco nezdravého že ?
Pokud to dobře chápu ja bych to upravil na :
(while (/= "SEQEND" (cdr (assoc 0 (setq blka (entget (entnext blk))))))
proste to první blka vymazal
dále se ptáte co to je SEQEND....
Pro pochopení doporučuju vzít prázdný výkres nakreslit třeba jednoduchou úsečku a uložit ho jako DXF... ten soubor pak přejmenujte třeba na ***.TXT a otevřte v poznámkovém bloku.... tím se vám zobrazí strašně obsáhlý ale čitelný zápis jak je vlastně tvořen jakoby vnitřní zápis všech prvků v Cadu. Dle toho můžete poznat která entita má jaké vlatnosti......
Dále celé DXF je děleno na hlavičku kde jsou systémovky, dále různé tabulky, hladit, stylů, typů čar...... atd... a v poslední části jsou entity.
Každá část začíná nějakým kodem a končí nějakým kodem
Třeba blok....
Blok začíná INSERT..... pak následují ATTRIBUT ATTRIBUT.... a vše je ukončeno SEQEND (jako zkratka SEKVENCE KONEC)
Něco podobného je i u křívky.... napřed je křivka s parametrama, a pak jednotlivé body s tloustkama a nakonec SEQEND..... je to jako by ukončení nějakého oddílu.... vše je velice dobře popsáno v helpu.... DXF reference....
Zapoměl jsem na něco ?
|
|
Ing. Martin Chlebovský
www.kde-je-auto.cz GPS monitoring provozu vozidel a osob. WebDeveloper. Programátor aplikací pro Autocad a MS Office. Tvorba WWW aplikací. Modelování domů a staveb.&l |
|
Kackac
TOP uživatel Přihlášen: 11.úno.2006 Lokalita: ČR (Pha) Používám: AutoCAD Stav: Offline Bodů: 469 |
Zasláno: 30.zář.2007 v 00:00 |
Nezapomněl jste na nic, naprosto vyčerpávající odpověď, moc děkuju.
Pochopila jsem i význam té samostatně stojící proměnné, ale nepochopila jsem, proč to tedy funguje i bez ní... funce mi vrací stejný výsledek se zakomentovanou i nezakomentovanou proměnnou vysledek a ctx, asi mi přecejen něco uniklo:) (defun soucett (cis1 cis2 / vysledek) (setq vysledek (+ cis1 cis2)) ;vysledek ) (defun prnatx (csl / ctx) (setq ctx (rtos csl 2 2)) ;ctx ) (defun c:souct () (setq c1 (getreal "zadej prvni cislo: ") c2 (getreal "zadej druhe cislo: ") ) (setq souc (soucett c1 c2)) (prompt (strcat "vysledek " (prnatx c1) " + " (prnatx c2) " = " (prnatx souc)" ")) ) |
|
Kackac
|
|
chlebovsky
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
Zasloužilý člen Přihlášen: 18.čer.2007 Lokalita: ČR (JM) Používám: Autocad R9 - 2022 Stav: Offline Bodů: 112 |
Zasláno: 01.říj.2007 v 11:22 |
Každá funkce vrací svůj provedený poslední úkon, to znamená ze v pripade soucett je sice poslední řádek ;vysledek ten ale není příkaz, proto funkce vrátí celý řádek (setq vysledek (+.....)) což vlastně je hodnota kterou potřebujete vrátit.
v případě třetím vrátí (prompt (strcat "vysledek " (prnatx c1) " + " (prnatx c2) " = " (prnatx souc)" "))
někdy se ale může stát že poslední výraz není zrovna to co by měla funkce vrátit.
proto spočítám poslední příkaz a pod tím bude to mé vraci....
teď mě sice nenapadá příklad, ale někdy na to určitě natrefíte.
|
|
Ing. Martin Chlebovský
www.kde-je-auto.cz GPS monitoring provozu vozidel a osob. WebDeveloper. Programátor aplikací pro Autocad a MS Office. Tvorba WWW aplikací. Modelování domů a staveb.&l |
|
Kackac
TOP uživatel Přihlášen: 11.úno.2006 Lokalita: ČR (Pha) Používám: AutoCAD Stav: Offline Bodů: 469 |
Zasláno: 01.říj.2007 v 16:03 |
Dobrá, budu vám tedy věřit i bez příkladu :)
Děkuju moc za ochotu a trpělivost Katka |
|
Kackac
|
|
Ferdinand
TOP uživatel Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1904 |
Zasláno: 09.říj.2007 v 14:17 |
Na mne je to příliš složitý... Osobně bych to řešil asi ve 2 krocích: prvně bych vložil blok, pak bych pootočil jeho atributy zpátky do nuly. Na p.ř. by to probíhalo takhle:
ř1. Command: _-attedit
ř2. Edit attributes one at a time? [Yes/No] <Y>: _Y ř3. Enter block name specification <*>: ř4. Enter attribute tag specification <*>:
ř5. Enter attribute value specification <*>:
Select Attributes: zde vyberu atributy ...
nnn attributes selected.
Enter an option [Value/Position/Height/Angle/Style/Layer/Color/Next] <N>: A Specify new rotation angle <35.54>: 0
...
Enter an option [Value/Position/Height/Angle/Style/Layer/Color/Next] <N>: enter
Command:
ř1. až ř4. mám jako makro na tlačítku
^C^C_-attedit _Y ;;;
a to co je červeně, by bylo třeba nějak (?) tam přifařit.
|
|
-FerTh-
|
|
Ferdinand
TOP uživatel Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1904 |
Zasláno: 15.lis.2007 v 11:34 |
Chtěl bych navázat na mou předchozí odpověď. Jak provést, aby se automaticky vybraly všechny atributy různých vložených bloků ve výkresu (tj. aby při výzvě "Select Attributes:" mi to provedlo hromadný výběr - přičemž některé atributy mají třeba i vlastnost Unvisible, Constant,...) ? Potřeboval bych všem atributům jedním příkazem přiřadit stejnou barvu resp. hladinu. V případě příkazu attedit ovšem by to chtělo pro každý zvlášť po mne potvrzení/volby... Pak by to chtělo nějak (?) zakomponovat do cyklu. Anebo na to jít podobně, jako je popsáno výše?
|
|
-FerTh-
|
|
Ferdinand
TOP uživatel Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1904 |
Zasláno: 15.lis.2007 v 13:19 |
To Kackac:
volání nadefinované funkce FUNKCE-X (který je v samostatném lispu FUNKCE-X.lsp) z jiného (běžícího) lispu
;;není-li přístupná aplikace FUNKCE-X...
(if(not c:FUNKCE-X) ;;...tak ho najde a načte
(load (findfile "FUNKCE-X.lsp")) ) Pokud je třeba také aby to hned vykonal, tak ještě přidat
(C:FUNKCE-X)
Jasně že cesta k FUNKCE-X.lsp musí být zpřístupněná v Možnostech.
|
|
-FerTh-
|
|
Kackac
TOP uživatel Přihlášen: 11.úno.2006 Lokalita: ČR (Pha) Používám: AutoCAD Stav: Offline Bodů: 469 |
Zasláno: 25.lis.2007 v 02:20 |
To Ferdinand:
z 9. října: zkoušela jsem v rychlosti mrknout na to vámi nabízené řešení "ve dvou krocích", přepsala jsem to do lispu, protože tlačítka nepoužívám, ale nedařilo se mi do toho zakomponovat právě to co je červeně. Teda vlastně mi tam nechodilo ještě něco, ale to si teď nevzpomenu co. 15.listopadu 1.: co se týče těch atributů invisible, jejich výběr mi cad2007 nabídl (myslím, že při globální editaci), 2004 nemám u ruky, takže nevím, jak to je tam. Ale určitě by to šlo řešit lispem, něco na způsob jako jsem vypotila na to otáčení, tam by byl bez problémů i ten cyklus. 15.listopadu 2.: děkuji, zatím jsem to sice nezkoušela, ale až se k lispu zase dostanu, zkusím si s tím pohrát. Problém je v tom, že při hrabání se v lispu mám neúměrnou spotřebu času, a toho teď jaxi nemám nazbyt, takže se omlouvám, že jsem nereagovala na vaše příspěvky, důvodem bylo to, že jsem se nedostala k tomu, abych to vyzkoušela. Snad na jaře Upravil Kackac - 25.lis.2007 v 02:21 |
|
Kackac
|
|
Ferdinand
TOP uživatel Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1904 |
Zasláno: 28.lis.2007 v 11:37 |
OT:
pozor na pravopis: podle mne správně se píše "yaxy"
|
|
-FerTh-
|
|
Kackac
TOP uživatel Přihlášen: 11.úno.2006 Lokalita: ČR (Pha) Používám: AutoCAD Stav: Offline Bodů: 469 |
Zasláno: 28.lis.2007 v 17:28 |
|
|
Kackac
|
|
Ferdinand
TOP uživatel Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1904 |
Zasláno: 03.led.2008 v 14:25 |
podle mne tam namísto "ATTRIB" má být "ATTDEF" Upravil Ferdinand - 03.led.2008 v 14:25 |
|
-FerTh-
|
|
Ferdinand
TOP uživatel Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1904 |
Zasláno: 12.kvě.2008 v 11:29 |
Opět navazuji na staré téma... Chtěl jsem použít ten lispík Kackac na natočení atributů bloku s volbou úhlu natočení (tedy nikoli do nula st.), protože by se mi teď hodil na hromadný "vlevo vbok". Ale - lisp provede natočení všech atributů veškerých (?) bloků + všech samostatních textů (?) na jiný úhel, než zadám. Např. zadám-li požadovaný úhel 90, natočí se mi na 116.62 st.
Dotaz1: Chci natočit atributy pouze u vybraného bloku (i když už je vícekrát vložen do výkresu - to by se měly natočit u všech) a to o zadaný úhel - lze to?
Dotaz2: Proč mi to otáčí i obyč. texty? Kde je chyba?
|
|
-FerTh-
|
|
Rostislav Říha
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
TOP uživatel Přihlášen: 03.říj.2004 Lokalita: ČR (Pha) Používám: ACA 2010 Stav: Offline Bodů: 1613 |
Zasláno: 12.kvě.2008 v 17:51 |
a nestacilo by ty texty vypnout/skryt/zmrazit?
|
|
Rostislav Říha
|
|
Ferdinand
TOP uživatel Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1904 |
Zasláno: 14.kvě.2008 v 12:54 |
Poněvadž texty se nachází ve stejné hladině do které jsou vloženy bloky s atributy, tato možnost v tomto případě není vhodná. Však právě proto cílím k tomu, aby ve výběru byly akceptovány jen a pouze atributy bloku(ů).
|
|
-FerTh-
|
|
Kackac
TOP uživatel Přihlášen: 11.úno.2006 Lokalita: ČR (Pha) Používám: AutoCAD Stav: Offline Bodů: 469 |
Zasláno: 12.čvc.2008 v 20:47 |
Po dlouhé době jsem se se zase dostala na cadfórum a s jistou radostí až pýchou jsem zjistila, že toto moje téma má bezkonkurenční návštěvnost
No nic, zpátky k tématu, byť je to už celkem dlouhá doba a možná to již není aktuální - k příspěvku Ferdinanda
Problém s jiným natočením než zadáte, pokud to ještě není vyřešeno, napadlo mě, zda to není špatně napsaným převodem mezi stupni a radiány. ad dotaz 1 - určitě to jde, zapsal by se filtr pro výběr bloku daného jména a cyklus, který by aplikoval akci otočení atributů na všechny tyto bloky ve výkrese ad dotaz 2 - nejspíš tam není filtr, který by do výběru zahrnul pouze entity typu atribut. Nevím, do jaké míry jste ten můj lisp upravoval dle vlastních potřeb, já, když jsem se k němu nedávno po dlouhé době dostala, zjistila jsem, že nefunguje (a to jsem měla za to, že fungoval, když jsem ho naposled opouštěla), a když jsem ho rozchodila, tak jsem odhalila spoustu nedostatků a problémů s jeho použitím, takže je možné, že pokud jste ho převzal, tak jste narazil na další problémy, které nebyly odladěné, protože původně to byl lisp víceméně pro mě na velmi omezenou oblast použití, tedy bez ošetření chyb, nenapadlo mě, že by se někomu hodil, to bych ho samozřejmě napsala líp:) |
|
Kackac
|
|
Pro technickou podporu CAD
kontaktujte Helpdesk
Odpovědět | Stránka <12 archiv |
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 1,512 sekund.