Zobrazit plnou verzi příspěvku: sipka1
Ferdinand
28.11.2007, 14:55
Navazuji na téma Šipka - směr - pomocí PLINE ze sekce AutoCAD .Teď jsem měl trochu času, tak jsem to sepsal do lispu.
uploads/20071128_145443_sipka1.lsp
Radim Cech
28.11.2007, 15:19
Máte tam asi nějakou mouchu, se to při opakovaném používání chová divně. Nechytá se to pokaždé za stejný bod. Jinak je to zajímavé řešení, ale přimlouval bych se za chytání za vrchol šipky, aby to tažení pro zvětšení šlo od vstupu a ne do vstupu, když to dám před objekt. A pak než 3x solid, to už je lepší SOLID šrafa.
Ale LTčkáři mají smůlu, což při řešení na řádku nebyli.
Radim Cech
28.11.2007, 15:29
Je to asi zapnutým uchopovacím bodem. Jakmile jsem jej zrušil a šipku ukážu buď bez zpřesnění a nebo si uchopovací bod zvolím až před ukázáním místa, pak má šipka správný tvar. První nebo poslední bod "stopky" šipky splyne s místem ukázání. Stačím mit uchopovací režim se zapnutým koncovým a prusečným bodem.
Ferdinand
30.11.2007, 13:52
Doplnil jsem to a teď to vypadá takhle
uploads/20071130_135220_sipka2.lsp
Radim Cech
30.11.2007, 14:42
Nerad neguji, ale ta verze vyplněná nějak nefunguje. Nekreslí to vůbec nic, co by ve finále připomínalo šipku.
Ferdinand
03.12.2007, 14:53
Omlouvám se, bylo to v pořadí kreslení entit.uploads/20071203_145222_sipka2.lsp
Vladimír Michl
03.12.2007, 18:38
Opraveno (pro Ferdinanda: pošlete mi prosím PM zprávu, jak se vám podařilo tam dostat starý formát URL odkazu přílohy - někde možná máme chybku v rozhraní fóra)
Radim Cech
04.12.2007, 16:50
Ale zase to nejde. Havaruje to na C:BODY, asi volání funkce.
A pokud můžu, nechte volání funkce SIPKA
Ferdinand
05.12.2007, 13:54
Možná v Civilu se to chová trocho odlišně - nevím, Civil neznám. Jasně, příkaz může být nadefinován třebas pod zkratkou SIP - stačí v Notepadu zeditovat... Ale vycházel jsem z obecné zkušenosti, že lispy mívají několik variant - a ty odlišuji číselným indexem na konci. Konečnou (tj. funkční) verzi pak "zfinalizuji" do přijatelnějšího názvu/zkratky. Napadá mne jedna věc: zkusit dát sekvenci C:BODY hned na začátek lispu, před vlastní výkonné jádro.
Radim Cech
05.12.2007, 14:04
CIVIL je "jen" vylepšený AutoCAD, tím to být nemůže.
Už to fungovalo, akorát to nějak havarovalo s jedním bodem šipky. Proto mně překvapilo, že to teď nejede vůbec
Zkusil jsem to dnes na plné verzi cadu 2007 a též to vypíše je chybu C:BODY, jak pro prázdnou tak i pro vyplněnou verzi šipky.
Ferdinand
06.12.2007, 08:12
Přeposílám sem - s opravou názvu funkce ze "sipka2" na "sip":
-- Předchozí soukromá zpráva --Odeslal : Martin BielinaOdesláno : 2007.pro.06 v 01:01Nevím jestli to není s křížkem po funuse, ale našel jsem tu chybičku, která způsobovala chybové hlášení C:BODY. Nicméně autor Lispu nejsem, tak jen posílám opravený kód pro případné uveřejnění autorem. Poznámka: Uvnitř funkce C:BODY chyběla jedna závorka na setq A navíc jsem udělal z BODY jen lokální subrutinu ;;kresleni sipky ;;-FerTh-20071128 (defun c:sip (/ ORM OSM) (setq ORM (getvar "orthomode")) (setq OSM (getvar "osmode")) (setvar "osmode" 33) (setvar "orthomode" 0) (setvar "filedia" 0) (initget "V P") (SETQ keypart (getkword "\nŠipka bude [Vyplněná/Prázdná]: <V> ")) (if (= keypart nil) (setq keypart "V") ) (cond ((= keypart "P") ;prazdna sipka (progn (BODY) (command "_zoom" "_W" W3 W4) (command "_pline" ZB B1 B5 B6 B7 B8 B2 "_C") (command "_zoom" "_P") ) (setq part 1) ) ((= keypart "V") ;vyplnena sipka (progn (BODY) (command "_zoom" "_W" W3 W4) (command "_trace" 0.5 B3 B4 "") (command "_solid" B1 ZB B2 "" "") (command "_zoom" "_P") ) (setq part 2) ) ) (command "_rotate" "_W" W1 W2 "" ZB pause) (command "_scale" "_P" "" ZB pause) (setvar "orthomode" ORM) (setvar "osmode" OSM) (setvar "filedia" 1) ) ;;podrutina pro ziskani bodu (defun BODY () (command "_solid" pause ^c^c) (setq ZB (getvar "lastpoint")) (setq B1 (list (+ (car ZB) 1) (- (cadr ZB) 0.5))) (setq B2 (list (+ (car ZB) 1) (+ (cadr ZB) 0.5))) (setq B3 (list (+ (car ZB) 1) (cadr ZB))) (setq B4 (list (+ (car ZB) 2) (cadr ZB))) (setq B5 (list (+ (car ZB) 1) (- (cadr ZB) 0.25))) (setq B6 (list (+ (car ZB) 2) (- (cadr ZB) 0.25))) (setq B7 (list (+ (car ZB) 2) (+ (cadr ZB) 0.25))) (setq B8 (list (+ (car ZB) 1) (+ (cadr ZB) 0.25))) (setq W1 (list (car ZB) (- (cadr ZB) 0.5))) (setq W2 (list (+ (car ZB) 2) (+ (cadr ZB) 0.5))) (setq W3 (list (- (car ZB) 5) (- (cadr ZB) 5.0))) (setq W4 (list (+ (car ZB) 7) (+ (cadr ZB) 5.0))) )
Pozn.: lisp je ke stažení pod názvem "sip.lsp" na
tomto odkazuFerdinand2007-12-06 08:28:41
Dovolil jsem si odkomentovat řádek--- ;;(command "_trace" 0.5 B3 B4 "") ---protože vyplněná šipka pod úhlem odlišným od 0/90/180/270° se nevykresluje správně.Takto upravený lisp nakreslí při volbě "Vyplněná" pouze vyplněný trojúhelník, bez dalších čar.
Ferdinand
06.12.2007, 13:51
Můj původní záměr byl, že 1. se vykreslí celá šipka (prázdná anebo plná - dle volby) v úhlu 0dg. (ukazuje doleva) a pak hotová se 2. otočí a 3. zvětší. Upravená verze dle vbehun by měla dělat (při volbě V) opravdu jen: 1. vykreslí plný trojúhelníček v úhlu 0dg. (ukazuje doleva), 2. otočí a 3. zvětší - anebo (při volbě P): 1. vykreslí celou prázdnou šipku v úhlu 0dg. (ukazuje doleva) a pak hotovou 2. otočí a 3. zvětší. Takhle se docílí tvarově nesouhlasných "šipek". Poslední variantu viz zde.
Ferdinand2007-12-06 13:53:15