Vytisknout stránku | Zavřít okno

Viac otázok...

Vytištěno z: CAD Fórum
Kategorie: Autodesk - stavebnictví, strojírenství, CAD/GIS
Název fóra: CAD programování
Popis fóra: Otázky programování - nadstavby a utility pro CAD a GIS aplikace Autodesk (VBA, AutoLISP, ARX/C++, .Net, JavaScript, Python, MEL...)
URL: https://www.cadforum.cz/forum/forum_posts.asp?TID=5356
Datum vytištění: 13.kvě.2026 v 08:53


Téma: Viac otázok...
Odeslal: michaelflyer
Předmět: Viac otázok...
Datum odeslání: 29.říj.2007 v 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....



Odpovědi:
Odeslal: vbehun
Datum odeslání: 29.říj.2007 v 10:29
Původně odeslal(a) michaelflyer michaelflyer napsal(a):

Viac otázok...
Dobrý deň.
4.Prosím vás nemá niekto rozpísaný príkaz _DIVIDE???
Vopred ďakujem....

Myslíte tohle ?
_DIVIDE
Select object to divide: Use an object selection method
<Number of segments>/Block: Enter a value (2-32767) or enter b
Block
Block name to insert: Enter the name of a block currently defined in the drawing
Align block with object ? <Y> Enter y or n or press Enter



Odeslal: michaelflyer
Datum odeslání: 29.říj.2007 v 12:02
Původně odeslal(a) vbehun vbehun napsal(a):


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

Áno, presne to....

Ale ja som myslel v lispe :-)


Odeslal: michaelflyer
Datum odeslání: 15.lis.2007 v 07:22
Prosím, poradí mi niekto stým bodom 2. a 3.???


Odeslal: Vladimír Michl
Datum odeslání: 15.lis.2007 v 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)



-------------
Vladimír Michl (moderátor)
ARKANCE CZ - https://arkance.world - arkance.world
(podpora viz helpdesk.arkance-systems.cz)


Odeslal: michaelflyer
Datum odeslání: 20.lis.2007 v 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...



Vytisknout stránku | Zavřít okno