• Dieses Forum ist die maschinengenerierte Übersetzung von www.cad3d.it/forum1 - der italienischen Design-Community. Einige Begriffe sind nicht korrekt übersetzt.

Bewegen Sie alles von unten links bis zum Punkt 0.0

  • Ersteller Ersteller zintonio
  • Erstellt am Erstellt am

zintonio

Guest
hallo.
ich habe viele zeichnungen wie der anhang i platz, in dem ich alle zeichnung von unten nach links (entsprechend punkt 1) zu punkt 0.0 bewegen brauche.
gibt es eine lippe, die mich diesen punkt 1 findet und die ganze zeichnung auf punkt 0,0 bewegt?
ich hoffe, ich war klar
danke.
 

Anhänge

  • 1.JPG
    1.JPG
    24,8 KB · Aufrufe: 24
hallo.

eine kleine modifizierung der lippe, die ich hier angebracht hatte: http://www.cad3d.it/forum1/showpost.php?p=171305&postcount=10Attenzione che se gli oggetti "estremi" sono testi, viene eine piccola pufferzone sul loro contorno.


(defun c:mx (/ listap sel e1 p1 p2 und os listapx listapy j1 j2 xmin ymin exmin )
(vl-load-com)
(setq os (getvar "osmode")
(setvar "osmode" 0)
(setq sel (ssget "_x")
(falls sel)
(Progn)
(setq i -1)
(Repeat)
(setq e1 (vlax-ename->vla-object (ssname sel (setq und (1+i))))))))
(vla-getboundingbox e1 'p1 'p2)
(setq listap (cons (vlax-safearray->list p1) listap)
(setq listap (cons (vlax-safearray->list p2) listap)
)
)
)
(setq listapx (vl-sort listap)
(setq listapy (vl-sort listap)
(setq xmin)
(setq ymin (cadr)
(setq exmin (list xmin ymin))
(Befehl "_move" sel "" exmin "0,0")
(seven "osmode" knochen)
)
 
hi, gp.
super:finger:!
in einigen designs funktioniert aber bewegt alle zeichnung auf einen punkt nicht 0.0. ich versuchte mit ctrl+a zu sehen, wenn es vielleicht punkte außerhalb des designs, aber es gibt keine. vielleicht sind sie versteckt und ich kann sie nicht sehen. ich versuchte auch ein _purge zu tun, aber bewegt sich nicht.
ich schaute die lispe an und bemerkte, dass der schlüsselspaß für die suche nach grenzpunkten ist: (vla-getboundingbox e1'p1'p2).
gibt es eine möglichkeit, die auswahl umzukehren? ich erkläre es besser... ich wähle mein design und dann mit einer invertierten funktion_auswahl wählt mich alles aus, was außerhalb meines designs ist, um es zu beseitigen.
cmq ich werde weiterhin tests machen...
danke.
 
die verwendete funktion erfasst die gesamte datenbank, dann auch entitäten auf schichten aus / frost. wenn sie diesen schichtzustand lieber beibehalten möchten, können sie "manuell" die videoeinheiten auswählen, indem sie (setq sel (ssget "_x") mit (setq sel (ssget) ersetzen.
 
tut mir leid, gp.
ich möchte alle objekte auf den abgefrorenen schichten auswählen. ich habe über folgendes nachgedacht:
(vlax-for x)
(vla-get-layers (setq #doc (vla-get-activedocument)))
(wenn (eq (vla-get-freeze x) :vlax-true)
(progn)
(vla-put-freeze x :vlax-false)
(vla-put-lock x :vlax-false)
(setq sel (ssget "_x" (cons 8)))
)
)
)

das einzige problem ist, dass ich es nicht in die wiederholung der auswahl integrieren kann (sel)
danke.
 
faccio prima in questa maniera:
Code:
(defun c:mx (/ listap sel e1 p1 p2 und os listapx listapy j1 j2 xmin ymin exmin )
(vl-load-com)
(setq os (getvar "osmode")
(setvar "osmode" 0)
(setq sel (ssget "_x")
(falls sel)
(Progn)
(setq i -1)
(Repeat)
(setq e1 (vlax-ename->vla-object (ssname sel (setq und (1+i))))))))
(setq e1l (tblsearch "layer" (vla-get-layer e1))))
(falls und
(nicht)
(/= (cdr (assoc 70 e1l) 1)
(/= (cdr (assoc 70 e1l) 3)
(/= (cdr (assoc 70 e1l) 4)
(/= (cdr (assoc 70 e1l) 5)
(/= (cdr (assoc 70 e1l)) 6)
(/= (cdr (assoc 70 e1l)) 7)
)
(Progn)
(vla-getboundingbox e1 'p1 'p2)
(setq listap (cons (vlax-safearray->list p1) listap)
(setq listap (cons (vlax-safearray->list p2) listap)
)
)
)
)
)
(setq listapx (vl-sort listap)
(setq listapy (vl-sort listap)
(setq xmin)
(setq ymin (cadr)
(setq exmin (list xmin ymin))
(Befehl "_move" sel "" exmin "0,0")
(seven "osmode" knochen)
)
von jedem objekt wird überprüft:

- dxf 62 -> wenn die schicht ausgeschaltet wird, hat die farbe einen negativen wert

- dxf 70 -> nicht die summe der folgenden werte

1 = die schicht eingefroren
2 = die schicht wird standardmäßig in neuen fenstern eingefroren
4 = die schicht blockiert

wenn sie in einen dieser fälle fallen, werden sie für die berechnung der begrenzungsbox verworfen.

:smile:
 
danke.
super:finger:

besser zu verstehen, dxf 70 hat als werte:
1 = die schicht eingefroren
2 = die schicht wird standardmäßig in neuen fenstern eingefroren
4 = die schicht blockiert
und
3=?
5=?
6=?
7=?
was entsprechen sie?
danke.
:smile:
 
die wahrheit sagen gruppencodeschicht 70 auch diese werte aufweisen können
16 = wenn eingestellt, hängt die tabelle außen von einem xrif ab
32 = wenn zusammen mit dem 16 bit gesetzt, die externe referenz korrekt fixiert
64 = wenn eingestellt, gibt es an, dass mindestens eine einheit des designs auf diesen punkt der tabelle zum letzten mal, wenn das design geändert wurde.
der zurückgegebene wert ist summe der angegebenen werte i, beispielsweise wenn eine schicht eingefroren + blockiert ist
typisierung (tblsearch "layer" "namelayer")
sie werden zurückgegeben ((0 . "schicht") (2 . "namelayer") (70). 5.) (62.7) (6. "kontinuierlich")


jedenfalls habe ich mit einem moment der ruhe die lispe durch die integration mit ihrem codefragment fixiert.
Code:
(defun c:mx (/ listap sel e1 p1 p2 und os listapx listapy j1 j2 xmin ymin exmin sel1 x e_name n)
(vl-load-com)
(setq os (getvar "osmode")
(setvar "osmode" 0)
(setq sel)
(vlax-für x)
(vla-get-layers (vla-get-activedocument))
(falls und
(vla-get-freeze x) :vlax-false)
(vla-get-layeron x) :vlax-true
(vla-get-lock x) :vlax-false)
)
(Progn)
(setq sel1 (ssget "_x" (list (cons 8 (vla-get-name x)))))))))))
(Fälle)
(Progn)
(Setq n -1)
(Repeat)
(setq e_name (ssname sel1 (setq n (1+ n)))))))))
(setq sel)
)
)
)
)
)
)
(falls sel)
(Progn)
(setq i -1)
(Repeat)
(setq e1 (vlax-ename->vla-object (ssname sel (setq und (1+i))))))))
(vla-getboundingbox e1 'p1 'p2)
(setq listap (cons (vlax-safearray->list p1) listap)
(setq listap (cons (vlax-safearray->list p2) listap)
)
)
)
(setq listapx (vl-sort listap)
(setq listapy (vl-sort listap)
(setq xmin)
(setq ymin (cadr)
(setq exmin (list xmin ymin))
(Befehl "_move" sel "" exmin "0,0")
(seven "osmode" knochen)
)
objekte werden aus dem filter auf gefrorenen schichten verworfen, ausgeschaltet oder blockiert... aber einen blick auf ihre "fragment" werfen ich bezweifle, ist es nicht, dass sie solche schichten aktivieren wollen und auch die objekte oben entworfen bewegen?

:smile:
 
danke.
nein, das ziel ist es, alles auf abgefrorenen, entriegelten und sichtbaren schichten zu bewegen. über das fragment des codes, den ich schrieb, habe ich tatsächlich falsch gemacht.
ich habe folgende ausdrücke gesetzt:
(vla-put-freeze x :vlax-false)
(vla-put-lock x :vlax-false)
die die betreffende schicht zu recht auftauen und entsperren.
ich wollte folgendes erreichen:
dann habe ich in der regel in einer zeichnung die schicht (a1,a2,...an,b1,b2,...bn).

aus gründen der übersichtlichkeit werden beispielsweise nur a1 und b1 zugegriffen. so können sie alle einschalten und alle zusammen bewegen, oder zu jedem schichtflusszyklus (vlax-for x) :
1. drehen sie das 1. paar (a1,b1) alle ihre inhalte bewegen.
2. das 1. paar ausschalten und das 2. paar einschalten. und so weiter bis zum ende.

logischerweise denken sie, sie alle einschalten und bewegen sie alle, aber es ist nicht gut, weil der mindestpunkt eines paares möglicherweise nicht mit dem minimum eines anderen zusammenfallen, so müssen sie es zu einer zeit tun.

deshalb habe ich die beiden codestrings geschrieben.

in pennies:
anhang ich beginne mit dem ersten paar;
2. ich fahre alles auf demselben schichtpaar (a1,b1)
3. ich schalte das erste paar aus und schalte das zweite paar (a2,b2) ein und wiederhole den zweiten zyklus zum paar (an, bn)

ich hoffe, ich habe klar erklärt, warum codefragment und alles, was die probleme des designs zusammen mit dem ziel zu verwirklichen sind.

danke gp für die informationen bisher:finger:
:smile:
 
tut mir leid.

ich versuche die liste in autocad 2008 und gebe mir folgenden fehler:
befehl: mx
; fehler: automatisierungsfehler. nullgröße.
befehl:

ich verstehe nicht, was es sein könnte. ist so was je passiert?

danke.
 
wahrscheinlich ist es auf schichten 0, defpoints und andere schichten innerhalb der blöcke erstellt. in der tat ausschalten, die liste funktioniert.
 

Statistik des Forums

Themen
58.521
Beiträge
499.056
Mitglieder
104.110
Neuestes Mitglied
ChristianR

Zurzeit aktive Besucher

Keine Mitglieder online.
Zurück
Oben