ARKANCE - globální Platinum partner Autodesk ARKANCE | KONTAKT - CZ | SK | EN | DE
Registrujte se na 22. ročník konference CADfórum 2025 - 30.9. Zámek Valeč.
Přes 119.000 registrovaných u nás, celkem 1.097.000 registrovaných (CZ+EN), přes 53.000 CAD/BIM bloků. Vyzkoušejte nový přesný Inženýrský kalkulátor a aktualizovaný Generátor čarových kódů.
Registrujte se na konferenci CADfórum 2025 - automatizace navrhování
RSS kanál - CAD tipy RSS tipy
RSS diskuze

Diskuze Diskuzní fórum, poradna

?
CAD diskuze, rady, výměna zkušeností

CAD Fórum - Homepage Veřejné diskuzní fórum k CAD aplikacím - ptejte se na libovolné otázky týkající se oboru CAx, podělte se o vaše znalosti a zkušenosti s programy AutoCAD, Inventor, Revit, Fusion, 3ds Max, Vault a s dalšími CAD/BIM/PDM aplikacemi. Zaregistrujte se nebo se přihlašte a zašlete váš příspěvek do odpovídajícího fóra. Viz další informace o CAD Fóru. Nechcete se registrovat? Zeptejte se v naší Facebook poradně.
Fórum nenahrazuje technický support firmy ARKANCE (CAD Studio) - přímá podpora pro zákazníky funguje na helpdesk.arkance-systems.cz
  FAQ FAQ  Prohledat fórum   Události   Registrovat Registrovat  Přihlásit Přihlásit

Téma uzavřenoVýběr více objektů a ukončení dialogu

 Odpovědět Odpovědět archiv
Autor
PepaR Zobrazit panel
CAD/BIM manager
CAD/BIM manager
Avatar

Přihlášen: 29.lis.2004
Lokalita: ČR (ZL)
Používám:
ruky a hlavu (občas ;)
Stav: Offline
Bodů: 6206
Přímý odkaz na tuto zprávu Téma: Výběr více objektů a ukončení dialogu
    Zasláno: 29.bře.2006 v 09:47
Dobrý den,
používáme 2 upravené lispy a chtěl jsme se zeptat zda by mi někdo nemohl pomoci je vyladit. První lisp slouží k otáčení vynašecích čar v kótách, ale kóty je možné vybírat jen jednotlivě. Mohl by někdo pomoci s hromadným výběrem?
 
Druhý lisp slouží pro přidání předdefinované poznámky, pod nebo nad kótovací čáru, ale dialog je nutné uzavřít vždy stiskem tlačítka OK. Mohl by někdo pomoci s úpravou aby fungovlo zavírání na Enter?
 
 
Předem moc děkuji za ochotu a možná se Vám budou tyto lispy taky hodit...
Zpět nahoru
PepaR Zobrazit panel
CAD/BIM manager
CAD/BIM manager
Avatar

Přihlášen: 29.lis.2004
Lokalita: ČR (ZL)
Používám:
ruky a hlavu (občas ;)
Stav: Offline
Bodů: 6206
Přímý odkaz na tuto zprávu Zasláno: 29.bře.2006 v 16:27
Citace
(defun c:FLIPDIM( / OBJ PT1 PT2 )
   (while (not OBJ)
      (setq OBJ(entsel "\nVyberte kótu pro otočení :"))
      (if OBJ
         (progn     
             (setq OBJ(entget(car OBJ)))
             (if (and OBJ (/= (cdr(assoc 0 OBJ)) "DIMENSION"))(progn (prompt "\nVyberte kótu!")(setq OBJ nil)))
         )
      )
   )
   (command "_undo" "_m")
   (setq PT1 (cdr(assoc 14 OBJ)) PT2(cdr(assoc 13 OBJ)))
   (setq OBJ (subst (cons 13 PT1)(assoc 13 OBJ) OBJ)
         OBJ (subst (cons 14 PT2)(assoc 14 OBJ) OBJ)
   )
   (entmod OBJ)
   (princ)
)
Zpět nahoru
Chop Zobrazit panel
Diskutér
Diskutér

Přihlášen: 13.srp.2005
Lokalita: Czech Republic
Stav: Offline
Bodů: 64
Přímý odkaz na tuto zprávu Zasláno: 30.bře.2006 v 07:23

zkuste:

(defun c:PRDIM (/ OBJ PT1 PT2)
  (princ "\nVyberte kóty pro úpravu...")
  (setq ss_kot (ssget '((0 . "DIMENSION"))))
  (if ss_kot
    (progn
      (setq cnt 0
     len (sslength ss_kot))
      (princ "\nUpravuji vybrané kóty...")
      (while (< cnt len)
 (progn
   (setq kotajm (ssname ss_kot cnt)
  OBJ (entget kotajm))
   (setq PT1 (cdr (assoc 14 OBJ))
  PT2 (cdr (assoc 13 OBJ))
   )
   (setq OBJ (subst (cons 13 PT1) (assoc 13 OBJ) OBJ)
  OBJ (subst (cons 14 PT2) (assoc 14 OBJ) OBJ)
   )
   (entmod OBJ)
   (setq cnt (1+ cnt))
      )     ;while
    )     ;progn 
  )     ;if  
  (princ)
)
)

Zpět nahoru
Rostislav Říha Zobrazit panel
TOP uživatel
TOP uživatel

Přihlášen: 03.říj.2004
Lokalita: ČR (Pha)
Používám:
ACA 2010
Stav: Offline
Bodů: 1615
Přímý odkaz na tuto zprávu Zasláno: 30.bře.2006 v 08:20
Původně odeslal(a) Chop Chop napsal(a):

(defun c:PRDIM

za neslusnou mluvu vas z fora mohou vyhodit.

Rostislav Říha
Zpět nahoru
Chop Zobrazit panel
Diskutér
Diskutér

Přihlášen: 13.srp.2005
Lokalita: Czech Republic
Stav: Offline
Bodů: 64
Přímý odkaz na tuto zprávu Zasláno: 30.bře.2006 v 08:51
Omlouvám se, pokud Vás irituje volání příslušné funkce. Je to jen neškodný fórek vzniklý překladem názvu původní funkce FLIPDIM. Aby volání bylo co nejkratší tak jsem zkrátil PRehoď DIM. Pokud Vám to vadí, tak si to libovolně přejmenujte. Jiný název jsem volil, aby jste si mohli vyzkoušet obě funkce a porovnat rozdíly.
Zpět nahoru
PepaR Zobrazit panel
CAD/BIM manager
CAD/BIM manager
Avatar

Přihlášen: 29.lis.2004
Lokalita: ČR (ZL)
Používám:
ruky a hlavu (občas ;)
Stav: Offline
Bodů: 6206
Přímý odkaz na tuto zprávu Zasláno: 30.bře.2006 v 15:27
FLIPDIM/PRDIM: Je to super, Vami zvolenym prikazem jsem teky vahal, ale posleze mi to doslo :)
 
Je to skvele a vse funguje jak ma. Dekuju mockrat....


Upravil PepaR - 30.bře.2006 v 15:28
Zpět nahoru
PepaR Zobrazit panel
CAD/BIM manager
CAD/BIM manager
Avatar

Přihlášen: 29.lis.2004
Lokalita: ČR (ZL)
Používám:
ruky a hlavu (občas ;)
Stav: Offline
Bodů: 6206
Přímý odkaz na tuto zprávu Zasláno: 30.bře.2006 v 15:29
Nepomohl by teda nekdo prosim jeste s tim dalsim lispem?
 
Původně odeslal(a) PepaR PepaR napsal(a):

;;======================================================
;; Function: DN_ShowNote
;; Purpose:  Show note selected from ListBox in EditBox
;;======================================================
(defun DN_ShowNote (/ lnum lnote)
(set_tile "error" "")
(setq lnum  (get_tile "lb_notes")
      lnote (nth (atoi lnum) dm_notes)
)
(set_tile "eb_note" lnote)
(princ)
)
;;======================================================
;; Function: DN_PlaceNote
;; Purpose:  If valid note is input, close dialog box
;;======================================================
(defun DN_PlaceNote ()
(set_tile "error" "")
(setq dn_modifier (strcase (get_tile "eb_note")))
(if (= dn_modifier " ")
    (set_tile "error" "Neplatný řetězec poznámky")
    (done_dialog 1)
)   
)
;;======================================================
;; Function: DN_AppendDim
;; Purpose:  Append note to selected dimension entity
;;======================================================
(defun DN_AppendDim (sset mod placement / cnt len ent dval)
(setq cnt 0
      len (sslength sset)
)
(princ "\nUpravuji vybrané kóty...")
(while (< cnt len)
   (setq
           en (ssname sset cnt)
          ent (entget en)
         dval (cdr (assoc 1 ent))
   )
   (if (= dval "")
       (setq dval "<>")
   )
   (if (= placement 1) ;above line
       (setq new_val (strcat dval " " mod))
       (progn
        (if (wcmatch dval "*\\X*")
             (setq new_val (strcat dval "\\P" mod))
             (setq new_val (strcat dval "\\X" mod))
        );if
       );progn    
   );if
   (entmod (subst (cons 1 new_val)(assoc 1 ent) ent))
   (setq cnt (1+ cnt))
);while
(princ "\nDokončeno")
(princ)
)
;;======================================================
;; Main Function - Dimension NOTE
;;======================================================
(defun C:DNOTE (/ cmd$ ss_dims dcl_id dm_notes dn_above)
(princ "\nVyberte text(y) kóty pro úpravu...")
(setq ss_dims (ssget '((0 . "DIMENSION"))))
(if ss_dims
  (progn
   (setq cmd$ (getvar "cmdecho"))
   (setvar "cmdecho" 0)
   (setq dcl_id (load_dialog "dimnotes.dcl"))
   (if (not (new_dialog "dimnote" dcl_id))(exit))
   (setq dm_notes '("VYSKA(PARAPET)" "MAX" "MIN" "OVĚŘIT" "REF" "TEXT"
                     "TYP" "TYPICAL" "VLASTNÍ 1" "VLASTNÍ 2"
                     "ZMĚNA"
                    )
        dn_above   0
   )
   (set_tile "eb_note" "TYP")
   (set_tile "dn_below" "1") ; Set as default
   (start_list "lb_notes")  
   (mapcar 'add_list dm_notes) 
   (end_list)
   (set_tile "lb_notes" "7")
   (action_tile "lb_notes" "(DN_ShowNote)")
   (action_tile "dn_above" "(setq dn_above 1)")
   (action_tile "dn_below" "(setq dn_above 0)")
   (action_tile "accept" "(DN_PlaceNote)")
   (action_tile "cancel" "(done_dialog 0)")
   (if (eq (start_dialog) 1)
       (DN_AppendDim ss_dims dn_modifier dn_above)
   )
   (unload_dialog dcl_id)
   (setvar "cmdecho" cmd$)
  );progn
  (alert "Nebyl vybrán žádný text kóty pro úpravu.")
);if
(princ)
)
Zpět nahoru
Chop Zobrazit panel
Diskutér
Diskutér

Přihlášen: 13.srp.2005
Lokalita: Czech Republic
Stav: Offline
Bodů: 64
Přímý odkaz na tuto zprávu Zasláno: 04.dub.2006 v 06:44

Dobrý den, stačí změnit focus na ovládací prvek v souboru dimnotes.dcl na

initial_focus = ok_cancel;

toto však nastaví "odentrování" při otevření dialogu tj. pokud se dialog otevře s přednastavenými hodnotami, stačí pouze odklepnout enter. Pokud změníte myší nějakou položku, tak se "focus" přesune z OK jinam. Návrat na OK by byl ve VBA možný pomocí procedury, která by sledovala jakoukoliv změnu zaměření (focus) prvků dialogu. V Lispu si nejsem jist, zda je něco podobného možné, protože soubor DCL se volá jen jednou při inicializaci dialogu a volání dialogu v lispu se uskuteční také jen jednou (start_dialog). 

(Pokud Vám to bude takhle stačit, tak budu spokojen. Pokud je to nedostatečné, tak Vám musí poradit někdo zkušenější protože Lisp v podstatě neumím).

 

Zpět nahoru
PepaR Zobrazit panel
CAD/BIM manager
CAD/BIM manager
Avatar

Přihlášen: 29.lis.2004
Lokalita: ČR (ZL)
Používám:
ruky a hlavu (občas ;)
Stav: Offline
Bodů: 6206
Přímý odkaz na tuto zprávu Zasláno: 04.dub.2006 v 18:35
Děkuji mnohokrát za info, ne že bych byl náročný, ale předpokládal jsem i po focus na enteru po změně hodnot, ale jsme rád, že to není zas tak jednoduché (aspoň si nepřipadám jako blbec :)
Zpět nahoru
Chop Zobrazit panel
Diskutér
Diskutér

Přihlášen: 13.srp.2005
Lokalita: Czech Republic
Stav: Offline
Bodů: 64
Přímý odkaz na tuto zprávu Zasláno: 12.dub.2006 v 07:45

Ještě mi to nedalo. Do funkce DN_ShowNote si před (princ)

doplňte:

(mode_tile "accept" 2)

a pak enter funguje téměř na vše. Výjimkou je jen ručně změněný text v boxu Pozn.

Zpět nahoru
PepaR Zobrazit panel
CAD/BIM manager
CAD/BIM manager
Avatar

Přihlášen: 29.lis.2004
Lokalita: ČR (ZL)
Používám:
ruky a hlavu (občas ;)
Stav: Offline
Bodů: 6206
Přímý odkaz na tuto zprávu Zasláno: 12.dub.2006 v 09:24
Díky moc, nakonec jsem do LISPu doplnil (mode_tile "accept" 2) a initial_focus = ok_cancel; radeji nezakomponovaval nebot kazdy pri spusteni predpoklada, ze kurzor skoci do boxu pro zapis hodnoty.

 

 
Zpět nahoru

Pro technickou podporu CAD
kontaktujte Helpdesk

Příbuzné CAD tipy:
Tip 3485:Rychlý výběr více objektů v Revitu.
Tip 401:Otevření více výkresů najednou
Tip 6032:AutoCAD: Skutečně to chcete provést?
Tip 4250:Jak v Revitu vytisknout více listů/pohledů najednou?
Tip 4878:Odemčení a zamčení objektů v Revitu.
Tip 6791:AutoCAD 2010: připojení více externích referencí najednou.


 Odpovědět Odpovědět

Přejít na fórum Oprávnění fóra Zobrazit panel



Stránka byla vygenerována za 0,469 sekund.