FastFiber

Een detail maken

Gestart door ronny, do 04 09 2008, 15:49:22

Vorige topic - Volgende topic

ronny

Wie kan mij helpen, ik moet op een groot aantal tekeningen een vergroot detail maken van een deel van de tekening. De bedoeling is dat er een deel van de tekening wordt geselecteerd en daarna wordt vergroot bv 5x en dat daarna alles netjes wordt getrimd. Had op internet een autolisp routine gevonden maar die werkt om één of andere reden niet.  :cry:

Thx

Ron
If the code is beutifull, don't keep if for your self, share it. Getting rich must be done an other way. :) I'm still waiting to get rich :(

EddyBeerke

Daar heb je toch viewpoorts voor?
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

ronny

Citaat van: EddyBeerke op do 04 09 2008, 15:56:39
Daar heb je toch viewpoorts voor?
Niet als je in modelspace werkt, bovendien is het aantal viewports per tekening beperkt. De bedoeling is om echte details te maken dmv een lisp routine :shock: :roll:
If the code is beutifull, don't keep if for your self, share it. Getting rich must be done an other way. :) I'm still waiting to get rich :(

ronny

dit is routine waar ik het over had, het trimmen gaat niet goed, heb de routine een aantal keer op dezelfde selectionset laten lopen, elke keer met een ander resultaat (niet altijd worden de objecten aan de juiste zijde getrimd). Iemand een idee?  :mrgreen:

(defun val (x e) (cdr (assoc x e)))
(defun enttype (e) (cdr (assoc 0 e)))
(defun entname (e) (cdr (assoc -1 e)))
(setq >90 (/ pi 2))
(setq >270 (* 3 (/ pi 2)))
(defun osends (ss pll pur / z eps)
  (ends ss)
  (foreach z eps
    (if (or (< (caadr z) (car pll))
        (< (cadadr z) (cadr pll))
        (> (caadr z) (car pur))
        (> (cadadr z) (cadr pur))
      )
      (command z)
    )
  )
)
(defun ends (ss / i ent cen)
  (setq len (sslength ss) i 0)
  (while (< i len)
    (setq ent (entget (ssname ss i)))
    (cond
      ((= (enttype ent) "LINE")
        (setq eps (cons (list (entname ent) (val 10 ent)) eps))
        (setq eps (cons (list (entname ent) (val 11 ent)) eps)) )
      ((= (enttype ent) "ARC")
        (setq cen (val 10 ent))
        (setq eps (cons
          (list (entname ent)
            (polar cen 0 (val 40 ent))) eps))
        (setq eps (cons
          (list (entname ent)
            (polar cen >90 (val 40 ent))) eps))
        (setq eps (cons
          (list (entname ent)
          (polar cen pi (val 40 ent))) eps))
        (setq eps (cons
          (list (entname ent)
          (polar cen >270 (val 40 ent))) eps))
        (setq eps (cons
          (list (entname ent)
            (polar cen (val 50 ent) (val 40 ent))) eps))
        (setq eps (cons
          (list (entname ent)
            (polar cen (val 51 ent) (val 40 ent))) eps))
        (setq eps (cons
          (list (entname ent)
          (osnap (polar cen (val 51 ent) (val 40 ent)) "mid")) eps)) )
      ((= (enttype ent) "CIRCLE")
        (setq cen (val 10 ent))
        (setq eps (cons
          (list (entname ent)
          (polar cen 0 (val 40 ent))) eps))
        (setq eps (cons
          (list (entname ent)
          (polar cen >90 (val 40 ent))) eps))
        (setq eps (cons
          (list (entname ent)
          (polar cen pi (val 40 ent))) eps))
        (setq eps (cons
          (list (entname ent)
          (polar cen >270 (val 40 ent))) eps)) )
    )
    (setq i (1+ i))
  )
)
(defun exp_pl (s / i len ent)
  (setq i 0 len (sslength s))
  (while (< i len)
    (setq ent (entget (ssname s i)))
    (cond
      ((= (enttype ent) "POLYLINE")
        (command "explode" (entname ent))
      )
      ((= (enttype ent) "INSERT")
        (if (= (val 41 ent) (val 42 ent) (val 43 ent))
          (command "explode" (entname ent))
        )
      )
    )
    (setq i (+ 1 i))
  )
)
(defun era_xtra (e)
  (setq ssx# (ssadd))
  (while (setq e (entnext e))
    (if (not (ssmemb e ssx#))
      (setq ssx# (ssadd e ssx#))
    )
  )
  (command "erase" ssx# "")
)
(defun c:dtl ()
  (if (and
    (setq px (getpoint "\nFirst corner: "))
    (setq py (getcorner px "\nOther corner: "))
    (setq pxx (getpoint px "\nNew first corner position: "))
    (setq xs (getreal "\nScale factor for detail: ")) )
    (progn
  (command "copy" "c" px py "" px pxx)
  (command "pline" px (list (car px) (cadr py)) py (list (car py) (cadr px)) "c")
  (setq ss (ssget "c" pxx (polar pxx (angle px py) (distance px py))))
  (setq last (entlast))
  (exp_pl ss)
  (setq ss (ssget "c" pxx (polar pxx (angle px py) (distance px py))))
  (era_xtra last)

 
 
  (command "scale" ss "" pxx xs)
  (setq pyy (polar pxx (angle px py) (* xs (distance px py))))
  (command "pline" pxx (list (car pxx) (cadr pyy)) pyy (list (car pyy) (cadr pxx)) "c")
  (command "trim" (setq b (entlast)) "")
  (osends ss pxx pyy)
  (command "")
  (redraw b)
    )
  )

  (princ)
)
(princ)

En dan is er nog iets,  ik begrijp de functie van deze lijn niet goed: (command "erase" ssx# "")  :(  het is de bedoeling (volgens mij) dat de kader van de polyline wordt weggegooid, maar dat gaat (ook) niet altijd goed  :cry:

(defun era_xtra (e)
  (setq ssx# (ssadd))
  (while (setq e (entnext e))
    (if (not (ssmemb e ssx#))
      (setq ssx# (ssadd e ssx#))
    )
  )
  (command "erase" ssx# "")
)
If the code is beutifull, don't keep if for your self, share it. Getting rich must be done an other way. :) I'm still waiting to get rich :(

EddyBeerke

Velen geven de voorkeur om NIET te verschalen (altijd 1:1 tekenen) en dan kun je dus wel een vp gebruiken!
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

ronny

Eddy,

Mijn tekeningen zijn altijd 1:1, maar soms moet er een verschaald detail op staan tbv de constructie er van. Dan wordt er een deeltje van de tekening vergroot en alle overbodige info weggegooid. (Net zoals vroeger toen we nog met het handje tekende) :shock:
If the code is beutifull, don't keep if for your self, share it. Getting rich must be done an other way. :) I'm still waiting to get rich :(

EddyBeerke

Citaat van: ronny op vr 05 09 2008, 08:17:00
Eddy,

Mijn tekeningen zijn altijd 1:1, maar soms moet er een verschaald detail op staan tbv de constructie er van. Dan wordt er een deeltje van de tekening vergroot en alle overbodige info weggegooid. (Net zoals vroeger toen we nog met het handje tekende) :shock:

Waarom dan niet een vp dan hoef je dus niet te verschalen, en of wat is het voordeel als je wel verschaald? vraag ik me af.
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

ronny

Met VP's kan je inderdaad een "detail" verschaald weergeven, maar dan wel met alle objecten die er in de tekening zitten en dat is nu net niet de bedoeling want dan staat er te veel overbodige info in het detail, dus VP's vallen af.
If the code is beutifull, don't keep if for your self, share it. Getting rich must be done an other way. :) I'm still waiting to get rich :(

EddyBeerke

Citaat van: ronny op vr 05 09 2008, 08:34:00
...te veel overbodige info in het detail, dus VP's vallen af.
Ik selecteer de objecten die ik wil gebruiken, kopieer ze en sloop alle overbodige dingen er uit, of zet in het vp de lagen uit die ik niet wil zien.
Als het detail opblaast moet je ook nog eens rekening houden met de schaal ervan.
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

bart

De werkzaamheid van deze lisp is afhankelijk van je scherm
zoom eens wat verder uit en probeer het nog een keer
Domme vragen bestaan niet.
Domme antwoorden wel.

m.vr. groet Bart

ronny

Het probleem blijft hetzelfde, somige lijnen worden aan de verkeerde zijde getrimd.  :auw: Zoals je op de bijlage kan zien, de onderste 2 zijn Oké, de bovenste niet. De routine heeft 3x achter elkaar gelopen en het resultaat is niet altijd hetzelfde ?!?
If the code is beutifull, don't keep if for your self, share it. Getting rich must be done an other way. :) I'm still waiting to get rich :(

bart

De input is niet het zelfde dus de output ook niet.

als je drie keer exact het zelfde venster selecteerd en de zelfde vergrotings schaal opgeeft komt er 3 keer het zelfde resultaat uit

De lsp werkt redelijk waarschijlijk gaat het fout als er iets wordt geselecteerd dat niet te trimmen is
Je zal er wat aan moeten sleutelen om e.a "altijd" te laten werken
Domme vragen bestaan niet.
Domme antwoorden wel.

m.vr. groet Bart

Joop

 :!: :!: Je gebruikt de Autocad parameter/optie LAST als variabele. Dit levert altijd problemen op :!: :!:
Een gelovig volger van
"de Sacrale Kunst van Luiheid",
zijn leider "Lisp" en acoliet "Script".

Joop

Ik ben zomaar eens even in de AutoCAD directories gaan kijken, specifiek in de Expres dir.
En wat kom ik daar tegen: de oude en vertrouwde extrim.
Dit bestaat al sinds 1999 en werkt nog steeds.
Wel de blokken even exploderen.

Voor alle zekerheid hier bijgevoegd. :mrgreen:
Een gelovig volger van
"de Sacrale Kunst van Luiheid",
zijn leider "Lisp" en acoliet "Script".

julien

Citaat van: ronny op vr 05 09 2008, 08:34:00
Met VP's kan je inderdaad een "detail" verschaald weergeven, maar dan wel met alle objecten die er in de tekening zitten en dat is nu net niet de bedoeling want dan staat er te veel overbodige info in het detail, dus VP's vallen af.
Je kan per viewport toch layers op onzichtbaar zetten?
Werken met copies is altijd gevaarlijk. Als er aanpassingen gebeuren moet je dat 2 keer doen!

yoin