Zobrazit plnou verzi příspěvku: Viac otázok...

michaelflyer
29.10.2007, 08:32

Viac otázok...

Dobrý deň.
1. Rutina v otáčaní:
     Chcel by som sa opýtať ako by sa dalo naprogramovať výberové okno tak aby som ho aj videl. Týka s to ssget „C“.
Napr.: pri výbere objektov je to okno vidieť, či už pri nejakom príkaze alebo aj bez neho. SSGET je obmedzené iba na jedno okno (v mojom prípade). Neviem ako to mám naprogramovať tak, aby som mohol vyberať viac vecí pomocou viacerých okien. Napr.: _ROTATE – vyberáte pomocou okna koľko toho chcete.

(defun c:OT ()
(setq     ent (entsel "\nVyber priamku, ktorá bude v horizontálnej polohe:"))

(setq m (getpoint "\nVyber bod 1:")) ;;; platí pre výber ssget
(setq n (getpoint "\nVyber bod 2:")) ;;; platí pre výber ssget

(progn
    (setq meno_ent (nth 0 ent))
    (setq zoznam_ent (entget meno_ent))
    (setq a (cdr (assoc 10 zoznam_ent)))
    (setq b (cdr (assoc 11 zoznam_ent)))
    (setq a1 (car a))
    (setq b1 (car b))
   
    (setq vyber_entit (ssget "C" m n)) ;;; vyber množiny objektov pomocu okna
    
    (if     (< a1 b1)
      (progn
     (setq ax (list (+ (car a) 1000.0) (cadr a)))
     (command "_rotate" vyber_entit "" a "_r" a b ax)
     (princ)
      )
    ) ;;; koniec if
    
    (if     (> a1 b1)
      (progn
     (setq ax (list (- (car a) 1000.0) (cadr a)))
     (command "_rotate" vyber_entit "" a "_r" a b ax)
     (princ)
      )
    ) ;;; koniec if
) ;;; koniec progn
)

Už som bod 1. vyriešil...

2. Chcel by som využiť viac rôznych hodnôt v jednom príkaze. GETDIST mi nepodporuje písmenká, ale iba vzdialenosť. A dať na nový riadok či chcem alebo nechcem zadať vzdialenosť sa mi zdá veľmi zdĺhavé pri používaní programu. Už teraz tam mám dosť premenných.
(setq r (getdist "\nZadaj vzdialenosť. Ak nechceš zadaj [Nie]:"))

3. Vykreslenie objektu ešte skôr ako zadám bod:
Mám súčiastku, ktorej po zadaní rôznych hodnôt zadávam vkladací bod. Dá sa to spraviť tak aby som už tú súčiastku mal skôr vykreslenú ako zadám vkladací bod? Tak aby bola v kríži (kurzoru myši) a akokoľvek myšou pohnem tak my bude súčiastku posúvať???

4.Prosím vás nemá niekto rozpísaný príkaz _DIVIDE v LISPe???

Vopred ďakujem....
michaelflyer2007-11-06 20:52:20

vbehun
29.10.2007, 10:29

[QUOTE=michaelflyer]Viac otázok...

Dobrý deň.
4.Prosím vás nemá niekto rozpísaný príkaz _DIVIDE???

Vopred ďakujem....
[/QUOTE]Myslíte tohle ?_DIVIDESelect object to divide: Use an object selection method<Number of segments>/Block: Enter a value (2-32767) or enter bBlockBlock name to insert: Enter the name of a block currently defined in the drawingAlign block with object ? <Y> Enter y or n or press Enter

michaelflyer
29.10.2007, 12:02
[QUOTE=vbehun]
Myslíte tohle ?_DIVIDESelect object to divide: Use an object selection method<Number of segments>/Block: Enter a value (2-32767) or enter bBlockBlock name to insert: Enter the name of a block currently defined in the drawingAlign block with object ? <Y> Enter y or n or press Enter [/QUOTE]
Áno, presne to....

Ale ja som myslel v lispe :-)michaelflyer2007-10-29 16:31:22

michaelflyer
15.11.2007, 07:22
Prosím, poradí mi niekto stým bodom 2. a 3.???

Vladimír Michl
15.11.2007, 18:56
ad 2) to si musíte ošetřit programem, proměnných (resp. symbolů) holt bude potřeba více než máte teď
ad 3) to snad dělá AutoCAD automaticky (pokud jste si ručně nevypnul DRAGMODE)

michaelflyer
20.11.2007, 15:17
Ad 3)
Nie, vživote som to ani nepoužil. No tak teda dám sem konkrétny príklad:

(defun c:OBDLZNIK ()
(setq a (getdist "\nZadaj dlžku:"))
(setq b (getdist "\nZadaj výšku:"))
(command "_DRAGMODE" "ON")
    (setq c (getpoint "\nZadaj bod:"))
    (command "_DRAGMODE" "A")
;;; body
(setq bod1 (list (+ (car c) a) (cadr c)))
    (setq bod2 (list (car bod1) (+ (cadr bod1) b)))
    (setq bod3 (list (car c) (+ (cadr c) b)))

;;; kresli:
(setq en1 (entmakex (list
                (cons 0 "line")
                (cons 8 "DefPoints")
                (cons 10 c)
                (cons 11 bod1))))
   (setq en2 (entmakex (list
                (cons 0 "line")
                (cons 8 "DefPoints")
                (cons 10 bod1)
                (cons 11 bod2))))
   (setq en3 (entmakex (list
                (cons 0 "line")
                (cons 8 "DefPoints")
                (cons 10 bod2)
                (cons 11 bod3))))
   (setq en4 (entmakex (list
                (cons 0 "line")
                (cons 8 "DefPoints")
                (cons 10 c)
                (cons 11 bod3))))

)

Chcem aby ten obdĺžnik bol vidiet skôr ako ho vložim do bodu...
michaelflyer2007-11-20 19:56:08