Zobrazit plnou verzi příspěvku: Změna typu čáry - Autolisp

WarCZ
09.04.2008, 10:16
Dobry den, ve škole sme dostali udělat nějaky utvar v autolispu. vše jsem zvladl ale nejsem schopen pomoci autolispu změnit typ čary ( čarkovana ) otevřel jsem napovědu a tam našel přikaz "-typč" po několika pokusech se mi podařilo čaru změnit ale nebyl jsem schopen ji vratit na plnou. ted už nejde ani to. nema někdo hotovy kus kodu na změnu typu čary ? DikyMuj nafunkční kod:    (command "-typč" "načti" "ACAD_ISO03W100" "acadiso.lin" "" "")mockrát děkuji za připomínky

svarc.vl
09.04.2008, 10:38
jestli chcete měnit typ čáry v hladině musíte ještě spustit (command "-hl" ..................) a změnit typ čáry v hladině ,zbytek kodu nepišu nevim co mate zaa autocad

WarCZ
09.04.2008, 11:27
nechtěl jsem to prodathovat přes hladiny ale pokud to bude nutne nebranim se... vytvořim pomoci _line krichli a potřebuju mit neviditelne čary čarkovaně. Vyzkoušim -hlMam tady AutoCAD2008 ale měl jsem za to že lispu to je jedno.

svarc.vl
09.04.2008, 12:15
jestli chcete menit pouze typ cary u objektu pak přez příkaz změna, musite ale v lispu vědět které entity měnit. příkazem -typč načtete jenom typ čáry do autocadu (si to myslim)

Seiner
09.04.2008, 12:31
Záleží na tom, z čeho se vychází a jaký má být výsledek a možností je samozřejmě víc. Jestli má být celá krychle (doufám, že je to totéž jako krichle :-)), umístěna v jedné hladině a něco má být plnou a něco čárkovanou čárou. Nebo jestli nají být viditelné hrany v jedné hladině a neviditelné v jiné a pro ty se má definovat typ čáry. A jestli se v tomto případě mají hladiny i programově nadefinovat.
  Jestli se kreslí hrany postupně pomocí příkazu LINE, není problém před kreslením neviditelných hran změnit hladinu nebo typ čáry.

Ferdinand
09.04.2008, 13:43
Ano, je to příklad, který má naučit studenta správnému postupu práce při kreslení. Takže prvně to namalovat "klasicky" a pak ten celý postup práce přepsat do lispu (v podstatě opsáním sledu příkazů z příkazové řádky)...
Ten útvar má být konkrétně krychle anebo si máte vybrat dle uvážení? Tak vyberte 2 soustředné kružnice a tomu posledně nakreslenému změňte typ čáry. Ferdinand2008-04-09 13:45:44

WarCZ
09.04.2008, 15:54


ano ma to byt krychle... dam tady zdrojak...(defun c:pavel ()    (setq bodA (getpoint "Zadejte prosim pocatecni bod A:"))     (setq a (getint "Zadej hranu krychle a"))    (setq xbodA (car bodA))    (setq ybodA (cadr bodA))    (setq bodB (list (+ xbodA a) ybodA 0))    (setq bodAA (list xbodA (+ ybodA a) 0))    (setq bodBB (list (+ xbodA a) (+ ybodA a) 0))    (command "_line" bodA bodB "")    (command "_line" bodA bodAA "")    (command "_line" bodB bodBB "")    (command "_line" bodBB bodAA "")    (setq bodD (list xbodA ybodA a ))    (setq bodC (list (+ xbodA a) ybodA a ))    (setq bodDD (list xbodA (+ ybodA a) a ))    (setq bodCC (list (+ xbodA a) (+ ybodA a) a ))    (setq bodO (list (+ xbodA a) (+ ybodA (* a 0.5)) a ))    (setq bodP (list (+ xbodA (* a 0.5)) (+ ybodA a) a ))    (setq bodM (list (+ xbodA a) (+ ybodA a) (+ a a)))    (command "_line" bodB bodC "")    (command "_line" bodAA bodDD "")    (command "_line" bodBB bodCC "")    (command "_line" bodC bodO bodCC "")    (command "_line" bodCC BodP bodDD "")    (command "_line" bodCC bodM "")            (command "_line" bodAA bodP bodM "")        (command "_line" bodB bodO bodM "")        (command "_line" bodB bodAA "")        (command "_line" bodP bodO "")    (command "-typč" "načti" "ACAD_ISO03W100" "acadiso.lin" "" "")    (command "_line" bodA bodD "")    (command "_line" bodD bodC "")    (command "_line" bodDD bodD "")    (command "_linetype" "načti" "continuos" "acadiso.lin" "" "")    (setq obvod (list  (* a 5.88631) ) )    (princ "Obvod = (2*sqrt(5) + sqrt(2))*a obvod je:")    (princ obvod )    (princ))Krom Krychle tam je ještě něco navic ale s tim problem nemamWarCZ2008-04-09 15:55:15

WarCZ
09.04.2008, 18:06
Tak jsem hledal hledal a našel tenhle kus kodu ale nemužu ho aplikovat :o( jsem z toho programovaciho jazyku na prašky. odladit to je noční můra(command "_arc" "S" bodS L M "")(setq oblouk2 (entlast))(setq popis1 (entget oblouk2))(setq oblouk2typcary (assoc____popis1))(setq novyoblouk2 '(___ . ____))(setq popis1 (subst novyoblouk2 oblouk2typcary popis1))(entmod popis1)

svarc.vl
10.04.2008, 06:36
musite nastavit typ čáry před kreslením
např (setvar "CELTYPE" "ACAD_ISO03W100") tj nastavit proměnou CELTYPE-Nastavuje typy čar pro nové objekty
jinak máte špatně napsaný typ čáry continuous chybí Vám předposlední písmenko u. momentálně mi nefunguje vaše načtení tohoto typu čáry ale v autocadu je standartně už načtená takže je to zbytečné.Typ čáry můžete načíst na začátku programu a pak přes systemovou proměnnou CELTYPE. Pokud si Váš program načtete do visual lispu .Viz menu pomůcky autolisp  můžete program krokovat  a ladit.  Jinak nemate nastavený uchop na "nic", ale pro školni ulohu bych to vynechal.Víc zase jindy práce volá

WarCZ
10.04.2008, 09:08
tak sem davam znovu kod. kdyby se mi ukazala jednou čarkovana čara tak se chytnu ale zatim co jsem všechno zoušel ( jak iso čara tak "čarkovaná" ) nepomohlo. klidně stači hodit ukazokovy kod a ja už to pochopim... Diky moc za pomoc...(defun c:pavel ()      ;(setq Sprom (getvar "CELTYPE"))      ;(command "-typč" "načti" "ACAD_ISO03W100" "acadiso.lin" "" "")    (setq bodA (getpoint "Zadejte prosim pocatecni bod A:"))     (setq a (getint "Zadej hranu krychle a"))    (setq xbodA (car bodA))    (setq ybodA (cadr bodA))    (setq bodB (list (+ xbodA a) ybodA 0))    (setq bodAA (list xbodA (+ ybodA a) 0))    (setq bodBB (list (+ xbodA a) (+ ybodA a) 0))    (command "_line" bodA bodB "")    (command "_line" bodA bodAA "")    (command "_line" bodB bodBB "")    (command "_line" bodBB bodAA "")    (setq bodD (list xbodA ybodA a ))    (setq bodC (list (+ xbodA a) ybodA a ))    (setq bodDD (list xbodA (+ ybodA a) a ))    (setq bodCC (list (+ xbodA a) (+ ybodA a) a ))    (setq bodO (list (+ xbodA a) (+ ybodA (* a 0.5)) a ))    (setq bodP (list (+ xbodA (* a 0.5)) (+ ybodA a) a ))    (setq bodM (list (+ xbodA a) (+ ybodA a) (+ a a)))    (command "_line" bodB bodC "")    (command "_line" bodAA bodDD "")    (command "_line" bodBB bodCC "")    (command "_line" bodC bodO bodCC "")    (command "_line" bodCC BodP bodDD "")    (command "_line" bodCC bodM "")            (command "_line" bodAA bodP bodM "")        (command "_line" bodB bodO bodM "")        (command "_line" bodB bodAA "")        (command "_line" bodP bodO "")    (setvar "CELTYPE" "ACAD_ISO03W100" )    (command "_line" bodA bodD "")    (command "_line" bodD bodC "")      (command "_line" bodDD bodD "")    (setvar "CELTYPE" "CONTINUOUS" )      (setq obvod (list  (* a 5.88631) ) )    (princ "Obvod = (2*sqrt(5) + sqrt(2))*a obvod je:")    (princ obvod )    (princ))

Seiner
10.04.2008, 09:21
to by IMHO mělo fungovat. A zkusil jste se podívat na ty čáry, jestli náhodou nemáte jen nějaké měřítko čáry, při kterém se čárkování nezobrazí? Zkuste VÝPIS a uvidíte, jakou čáru má které hrana nastavenou. Případně pak manipulujte s LTSCALE

WarCZ
10.04.2008, 09:36
jo bylo to tim to mě vubec nenapadalo...  Je tenhle zapis dobře ? (setvar "LTSCALE" 0.5 ) jde mi o to že je čara v mem rozměru jenom jednou přerušena ale i tak diky je to pro mě velky pokrok...

svarc.vl
10.04.2008, 09:47
zapis je dobře, jinak to zjstite, že řadek napišete přímo do příkazové řádky Autocadu. Když je to dobře vrátí Vám autocad hodnotu jinak napíše chybu. Taky by šlo měřítko čáry počítak z hrany krychle jako nějaký podíl

WarCZ
10.04.2008, 09:56
mockrat vam děkuji za pomoc tak hluboko to zatim řešit nemusim. určitě sem odkažu meho dědu, ktery bojuje už mnoho let s autocadem a konečně se připojil na internet. Mockrát všem děkuji a přeji pěkny den.

Ferdinand
10.04.2008, 13:57
OT: Kolikpak je tomu dědečkovi? Žeby nějaký zdatný důchodce?

Seiner
10.04.2008, 14:01
:-) Jó pane, aktivní věk se prodlužuje. Já znám jednu rodinu, kde aktivně projektují 3 generace. A dědeček hravě strčí spoustu mlamojů do kapsy.

WarCZ
10.04.2008, 14:04
dědovi je přes 70. Ohledně historie PC nema asi konkurenci. Doma ma 4 PC kdy ted posledni s Win XP a autocadem 2008. Aktivně konstruuje ( a pracuje ) a ma hromadu programu v Basicu na konstrukci. Ted se uči Cčko a ten autocad. Ja ho obdivuju pro něho je přechod z Win 98 na Win XP běh na dlouhou trať kdy si prvně přečetl tu 800 strankovou bibli. tak samo autocad...

Ferdinand
10.04.2008, 15:10
Prošel jsem ten lisp. Máte tam opačně neviditelné hrany (namísto vzadu jsou vpředu). Lisp jsem trošku poopravil (ale asi to měl dělat Váš profesor, který Vás učí...)
zde je
OT: Klobouk dolů před Vašim dědečkem!

MarS
11.04.2008, 19:09
Jak tak vidim tak uz deolas krychlu :-) Tu uz mam hotovou jen me trapi jeden prikaz ve 2D modelu _rotate(otoceni) Nevite nahodou nekdo jak by mel vypadat prikaz pro pootoceni vepsaneho trojuhelnika o 60 stupnu ajako referencni bod pouzivam stred kruznice ktery mam definovany jako S a Trojuhelnik pojmenovany jako TR?? budu vdecny za kazdou radu.
muj kod: (defun C:kruh ()
     (setq s (getpoint "Zadej stred:"))
     (setq r (getint " zadej polomer kruznice: "))
     (command "_circle" s r )
     (command "_polygon" 3 s "_i" r)
     (setq tr (entlast))
     (command "_rotate" "tr" s 60)
     
)

nejak nevim jak to napsat nebo spis kde delam chybu v tomhle su spis samouk..MarS2008-04-11 19:12:31

WarCZ
11.04.2008, 19:52
(command "_rotate" polygon "" bodA 180 "")Polygon - entitabodA - bod kolem ktere otačim

MarS
11.04.2008, 20:01
Mas to u me WarCZ... diky moc.