Zobrazit plnou verzi příspěvku: šrafovanie v lisp
zaciatocnik
22.05.2022, 17:13
Zdravím,mám taký problém. Potrebujem napísať program na nakreslenie obrázku a jeho následne vyfarbenie/vyšrafovanie ak si to užívateľ bude žiadať. Problém je ale v tom, že ten prvý obrázok v novom modely mi nevyšrafuje, potom keď kreslím ďalšie tak pracuje v pohode, vždy to zlyhá len v tom prvom obrázku. Ak niekto bude mať nejakú radu budem vďačná.... (if (= listok 2) (progn (setq farba3 farba4) (setq vybrat(ssget'((0 . "CIRCLE"))));vybere objekty na vysrafovanie ) ) (if (= listok 3) (progn (setq farba3 3) (setq vybrat(ssget"_X" '((0 . "ELLIPSE"))));vyberie listok na vysrafovanie ) ) (if vybrat (progn (setq objekt 0) (setq v (sslength vybrat));do premenej v ulozi pocet objektov ktore srafujeme (while (< objekt v) (setq entname(ssname vybrat objekt));dostane nazov postupne kazdy objekt z vyberu (command "_bhatch""p""solid""s" entname"" "_color" farba3"");srafuje (setq objekt(+ objekt 1)) ) ) ) (setq farebnost(getint "\nAk chces farbit klikni 1 ak nie klikni 0"));vyber ci chce dotycny farbit )
Vladimír Michl
22.05.2022, 18:16
Asi bych na to použil jednodušší příkaz _HATCH, ale i takto by mělo fungovat. Podívejte se na příkazový řádek, co příkaz píše a co se mu případně nezdá na volání příkazu:(command "_bhatch" "_pat" "solid" "_sel" entname "" "_col" farba3 "")
zaciatocnik
22.05.2022, 20:50
Ten prvýkrát mi v príkazovom riadku za bhatch vypíše 2D point or option keyword required; error: Function cancelledale pri opakovanom kreslení už mi to nevypisuje a funguje to normálne. V autolisp sa ešte moc nevyznám a neviem prečo mi píše iba keď to použijem prvýkrát.
Vladimír Michl
22.05.2022, 20:54
Těch příčin může být více - když tak pošlete celou komunikaci na příkazovém řádku (copy/paste) před touto chybou. Např. to může být vliv předchozího příkazu nebo je entname prázdné.
zaciatocnik
22.05.2022, 20:59
Select objects: Specify opposite corner: 11 foundSelect objects:_bhatchCurrent hatch pattern: ANGLESpecify internal point or [Properties/Select objects/draW boundary/remove Boundaries/Advanced/DRaw order/Origin/ANnotative/hatch COlor/LAyer/Transparency]: pEnter a pattern name or [?/Solid/User defined/Gradient] <ANGLE>: solidCurrent hatch pattern: SOLIDSpecify internal point or [Properties/Select objects/draW boundary/remove Boundaries/Advanced/DRaw order/Origin/ANnotative/hatch COlor/LAyer/Transparency]: sSelect objects: 1 foundSelect objects:Current hatch pattern: SOLIDSpecify internal point or [Properties/Select objects/draW boundary/remove Boundaries/Advanced/DRaw order/Origin/ANnotative/hatch COlor/LAyer/Transparency]: _colorNew color [Truecolor/COlorbook/. (for use current)] <use current>: 241New background color [Truecolor/COlorbook/. (for none)] <None>:Current hatch pattern: SOLIDSpecify internal point or [Properties/Select objects/draW boundary/remove Boundaries/Advanced/DRaw order/Origin/ANnotative/hatch COlor/LAyer/Transparency]: _bhatch2D point or option keyword required.; error: Function cancelled
Vladimír Michl
22.05.2022, 21:04
Tenhle výpis ale není generován výše uvedeným kódem. Ten vyšrafuje vždy jeden objekt a pak znovu spouští BHATCH.
zaciatocnik
23.05.2022, 11:11
Ono to je pre ten kód, vždy keď ho zavolám prvýkrát tak mi vypíše tento výpis a keď ho volám znova tak mi vypíše to isté až na to, že to prvé bhatchCurrent hatch pattern: ANGLEnevypíše ANGLE ale SOLID a nevypíše mi ani chybu ale pracuje správne.
Vladimír Michl
23.05.2022, 13:31
Ne, výpis je pravděpodobně z jiné části vašeho kódu, ne z té výše uvedené. Když tak jej pošlete celý (např. přes náš Helpdesk) ať se podíváme, kde to může selhávat.