yoin

Reimer

Beste H@rm,

leuk om te horen dat mijn routine prettig vindt. Ik heb er nooit aan gedacht dat het aanpassen van het UCS veel impact heeft wanneer UCSFOLLOW op 1 staat. Daarom heb ik de routine nu zo gemaakt dat deze tijdelijk op 0 wordt gezet. Echter wanneer UCSFOLLOW op 0 staat of je staat al in WCS dan heeft het veranderen van de UCS volgens mij geen merkbaar effect.
Misschien kun je de handelingen die P00 doet eens handmatig doen en kijken waar de vertraging optreed. (dus eerst UCS op World zetten. Dan pasteclip => 0,0. Tenslotte UCS => previous)
Je kunt ook in de lisproutine de regels die het UCS aanpassen even uitschakelen door er ; voor te zetten. Als je dan de routine opnieuw laad kun je testen of het plakken sneller gaat dan eerst.

Als ik wat meer tijd heb zal ik even kijken of ik een controle op WCS kan uitvoeren zodat het overbodig instellen van WCS niet meer nodig is.

Reimer.

;----------------------------------------------------------------------------------------
(defun c:c00 ()
  (setq oldsnap (getvar "osmode"))
  (setvar "osmode" 0)
  (setq UCSVOLG (getvar "ucsfollow"))
  (setvar "ucsfollow" 0)
  (setq obj (ssget))
  (if (= obj nil)
    (progn
      (princ "\nGeen objecten geselecteerd!")
      (princ)
    )
    (progn
      (command "ucs" "w")
      (command "copybase" "0,0" obj "")
      (command "ucs" "p")
    )
  )
  (setvar "ucsfollow" UCSVOLG)
  (setvar "osmode" oldsnap)
)

;----------------------------------------------------------------------------------------
(defun c:p00 ()
  (setq oldsnap (getvar "osmode"))
  (setvar "osmode" 0)
  (setq UCSVOLG (getvar "ucsfollow"))
  (setvar "ucsfollow" 0)
  (command "ucs" "w");eventueel uitschakelen door ; vooraan te zetten   <----
  (command "pasteclip" "0,0")
  (command "ucs" "p");eventueel uitschakelen door ; vooraan te zetten   <----
  (setvar "ucsfollow" UCSVOLG)
  (setvar "osmode" oldsnap)
)

H@rm

Citaat van: Reimer op di 13 10 2009, 10:53:38
;----------------------------------------------------------------------------------------
(defun c:c00 ()
  (setq oldsnap (getvar "osmode"))
  (setvar "osmode" 0)
  (setq UCSVOLG (getvar "ucsfollow"))
  (setvar "ucsfollow" 0)
  (setq obj (ssget))
  (if (= obj nil)
    (progn
      (princ "\nGeen objecten geselecteerd!")
      (princ)
    )
    (progn
      (command "ucs" "w")
      (command "copybase" "0,0" obj "")
      (command "ucs" "p")
    )
  )
  (setvar "ucsfollow" UCSVOLG)
  (setvar "osmode" oldsnap)
[color=green](princ)[/color]
)

;----------------------------------------------------------------------------------------
(defun c:p00 ()
  (setq oldsnap (getvar "osmode"))
  (setvar "osmode" 0)
  (setq UCSVOLG (getvar "ucsfollow"))
  (setvar "ucsfollow" 0)
  (command "ucs" "w");eventueel uitschakelen door ; vooraan te zetten   <----
  (command "pasteclip" "0,0")
  (command "ucs" "p");eventueel uitschakelen door ; vooraan te zetten   <----
  (setvar "ucsfollow" UCSVOLG)
  (setvar "osmode" oldsnap)
[color=green](princ)[/color]
)


Reimer,

Ik heb nog twee keer een (princ) toegevoegd in jouw code om de melding van mijn osmode instelling niet op het scherm te krijgen.
Verder zal ik deze lisp de komende tijd verder testen of hij nu nog vertraagd.

Ik laat nog van mij horen.
Tot zover in ieder geval BEDANKT.

Michel aka H@rm
Acad 10 t/m 2015
Revit 2010 t/m 2015
autodidact lisp

roy_043

Volgens mij kun je i.p.v. het wijzigen van het ucs beter trans gebruiken. Deze lisp-functie is speciaal voor dit soort gevallen bedoeld.

Voorbeeld:
(command "_.line" (trans '(0.0 0.0 0.0) 0 1) (trans '(1.0 1.0 0.0) 0 1))
Deze code tekent een lijn van 0,0,0 naar 1,1,0 (coördinaten in wcs) ongeacht de stand van het ucs.

Reimer

Dit is een erg handige functie, maar in dit geval werkt het niet helemaal. Het insertionpoint wordt wel goed omgerekend maar mijn selectie wordt gedraaid geplakt indien mijn UCS gedraaid is t.o.v. World. Ik werk dus voorlopig nog met het terugzetten naar WCS.

Reimer

roy_043

#19
Reimer je hebt gelijk. Aan dat probleem had ik niet gedacht.

FastFiber