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

Finden Sie Objekte auf nicht bedruckbaren Schichten, innerhalb einer Auswahl von Blöcken

  • Ersteller Ersteller x11start
  • Erstellt am Erstellt am

x11start

Guest
Ich möchte einen Zeichnungsbereich auswählen, die enthaltenen Blöcke (Blöcke mit verschiedenen Namen, mit und ohne Attribute) analysieren und prüfen, ob in diesen Blöcken Einheiten vorhanden sind, die auf nicht bedruckbaren Schichten (z.B. "Defpoints"-Schicht, aber auch andere Schichten im "nicht bedruckbaren" Modus) liegen.
mit jimmy bergmark lisp ( Schichtzustand ) Ich bekomme die Liste der undruckbaren Schichten des ganzen Designs... dann sollte ich sie mit denen der Wesen in den verschiedenen ausgewählten Blöcken vergleichen.... und hier "den Esel fallen" (in diesem Fall der Unterzeichnete!): es ist einfach zu finden, auf welchen Schichten die Blöcke.... aber zu "ein" zu jedem Block, es wird komplizierter.
Ich denke nur, dass ich jeden einzelnen Block "explodieren", die Schichten überprüfen und den Block revidieren soll.... aber ich bin sicher, dass es elegantere und schnelle Methoden gibt!
 
ein Verfahren könnte sein, nur nicht bedruckbare Schichten zu aktivieren (lampadina).
Im Gegensatz zum Gefrieren (sun) zeigt die Lampe auch die geschachtelten Schichten
 
... natürlich, aber ich möchte diese Prozedur in eine breitere lisp (bereits erstellt) einfügen, die in der Reihenfolge die Teile der Zeichnung (im Wesentlichen der a3-sitzigen Formate alle auf dem Modellraum) druckt.
aktuell stoppt der Befehl, wenn er Objekte auf nicht bedruckbaren Schichten findet und sagt mir: "fincopallino nicht bedruckbare Objekte gefunden: wollen Sie gleich drucken? ".
das Problem ist, dass diese Überprüfung alle Arten von Objekten und sogar Blöcke betrifft, aber diese werden nicht in ihnen analysiert, sondern nur die Schicht, auf der sie liegen.
... Ich weiß, dass es eine "Feinlichkeit" ist, da es genug ein wenig Sorgfalt bei der Erstellung von Blöcken ist, aber ich wollte etwas wie Unbecile schaffen (.... abonniert!).

ps.
das Kommando oben, Ich teile es nicht, da es nicht "generisch" ist, aber es hat eine ganze Reihe von spezifischen Optionen und Anfragen des Unternehmens, in dem ich arbeite... daher wäre es lang und langweilig, es für andere nutzbar zu machen.
 
Zuletzt bearbeitet:
Sind Sie daran interessiert, die Liste der Schichten von Objekten im Block, die Liste der nicht bedruckbaren Schichten, machen diese Schichten bedruckbar oder etwas?
 
Ich muss nur wissen, dass in dem Blatt, das ich drucken werde, Blöcke vorhanden sind, die Körper haben, die nicht gedruckt werden würden. Dann sagt ein Alarm, dass ich die Presse stoppen soll. Ich werde den falschen Block ändern und den Befehl neu starten.
 
aber erstellen Sie nicht zuerst einen aktuellen Schichtzustand, aktivieren Sie das Grundstück auf allen Ebenen, senden Sie Druck und stellen Sie die Situation wieder her?
 
aber erstellen Sie nicht zuerst einen aktuellen Schichtzustand, aktivieren Sie das Grundstück auf allen Ebenen, senden Sie Druck und stellen Sie die Situation wieder her?
Vielleicht habe ich es nicht richtig erklärt und mich entschuldigt.
die Schichten, die nicht bedruckbar sind, sind nach Wahl, nicht kommen Mai gedruckt: sie sind Schichten, die wir für Noten oder für die Überprüfung durch Overlay verwenden; dann ziehen Sie eine Linie auf dieser Schicht und dann schließen Sie diese Zeile in einem Block (auf der Schicht "0"), ist ein Fehler: offensichtlich würde die Zeile nicht gedruckt werden.
Wenn ich (durch den Schichtzustand) diese Schichten bedruckbar machen und dann wieder in die vorherige Situation zurückkehren würde, würde ich die Linie oben drucken... aber ich würde auch Notizen drucken nicht Ich will drucken.
mit dem Deckel, von dem ich den Link in der ersten Nachricht (Schicht-Zustand) befestigt habe, finde ich die Liste aller nicht bedruckbaren Schichten des Designs [es. ("Defpoints" "Note" "Sovrapp")], aber der Alrt, der mich von einem Fehler warnt, wird nur in 2 Fällen erscheinen:
- eine auf einer der oben genannten Schichten platzierte Einheit: Ich habe sie bereits umgesetzt.
- eine auf einer der oben angegebenen Schichten platzierte Einheit, aber in einem Block platziert.

Dieser zweite Fall ist das Ziel meiner Frage, da es notwendig ist, im Block "ein" zu "eingeben", um die verschiedenen Objekte zu überprüfen.

Wie ich eingangs sagte, ist all dies für "den Vorteil", um meine Lispe effizienter zu machen, die Fehler zu entdecken, die durch den Unterzeichneten (oder durch meine Kollegen) begangen wurden: Ich dachte, es gäbe einen vl-cerca-dentro-al-blocco Befehl (ursprünglich appeze ich vl-xxx Befehle sehr .... aber ich kann sie nicht behandeln!).

Vielen Dank für Ihren Rat und Ihr Interesse.
 
Jetzt ist es klar, sobald ich Sie eine Datei platzieren kann, die alle Einheiten des Blocks auflistet und Sie können entscheiden, was mit ihm zu tun ist, hoffe ich von heute.
 
su cadtutor mi hanno proposto un lisp ... che però trova come non stampabile solo "defpoints" e non altri layer, inoltre analizza tutto il disegno e non solo i blocchi selezionati.
se ti puo' essere utile come base.... io non ci so mettere mano con tutti questi vla-xxx!


(defun c:foo (/ laylst blklst num)
(vlax-for layobj (vla-get-layers (vla-get-activedocument))
(falls (= vlax-get-property layobj 'plottable) :vlax-false)
(setq laylst (cons (vla-get-name layobj) laylst))
)
)
(cond)
(>) 0)
(vlax-for blk (vla-get-blöcke (vla-get-activedocument (vlax-get-acad-object))) ;listet alle Blockdefinitionen in der Zeichnung
(vlax-for obj blk ;für jedes Objekt im Block
(cond)
(und (nicht (Mitglied (vla-get-name blk) blklst)))) (Mitglied (vla-get-layer obj) laylst))
(setq blklst (cons (vla-get-name blk)
)
)
)
)
(falls (>) 0)
(Prog.)
(prompt (strcat "\n" (itoa num) " Blöcke gefunden mit Einheiten auf nicht-plotierbaren Schichten:")
(jeder Artikel blklst
(Prompt (Strcat "\n" item))
)
(falls (> num 5)
(Textseite)
)
)
(Prompt "\nno Blöcke gefunden)
)
)
(t)
(Prompt "\nall Schichten sind bespielt)
)
)
(princ)
)
 

Anhänge

Code:
(defun c:bklayploth (/ss und sn name bd lblk)
(setq layerh (fnlayersh))
Gold acdoc
(setq acdoc (vla-get-activedocument))
)
; gestisci le tun koordinate
(Setq ss (Lese "_w" (Liste 35.25 411.72) (Liste 437.1 67.68) (Liste 0 "Insert"))

Oppur selezioni
(setq ss (ssget (list 0 "insert"))))
(falls (/= ss nil)
(Länge ss)
(setq sn (sssname ss (setq i (1-i)))))
(wenn nicht (erinnern Sie sich (Setq-Name)))
(Progn)
(Setq l (cons name l))
(vlax-for x (setq bd (vla-item (vla-get-blocks acdoc) Name)
(Setq-Schicht (vla-get-Schicht x))
(if (/= (Teilschichtschichtenh) nil)
(Progn)
(setq lblk)
(falls (/=)
(Princ (Strcat "\n" Name)
)
)
)
)
)
)
)
(princ)
)
(falls ss
(vla-regen acdoc acallviewports)
)
(princ)
)

(defun fnlayersh(/ l layobj)
(vlax-for layobj (vla-get-layers (vla-get-activedocument))
(falls (= vlax-get-property layobj 'plottable) :vlax-false)
(setq l (Liste)
)
)
l l
)
fnlayersh Funktion gibt die Liste der nicht-platierbaren Schichten zurück
der bklayploth Befehl fordert Sie, die Blöcke zu scannen, auf Befehl listet die Blöcke mit dem Fehler.

Bye
 
@rpor66 ... vergeben Sie mir, aber ich kann es nicht funktionieren: bittet mich, Blöcke auszuwählen und dann nichts..
Ich dachte, es wäre unvereinbar mit gstarcad, also habe ich es auf autocad versucht (eine Version ein bisschen datiert für die Wahrheit). Ich versuchte auch, den Schritt-für-Schritt-Befehlen zu folgen... aber ich sperre mich an der ersten Vla...

jedoch Ich versuche auch die Lösungen, die im Forum Cadtutor vorgeschlagen wurden... Ich gebe es zu: Ich spiele auf 2 Tischen, aber ich hoffe, Sie vergeben mir!
Wenn sie mir gültige Hinweise geben, werde ich sie hier posten... Ich verspreche es!
 
Hier ist die Lösung, die mir die Freunde des Forums Cadtutor (Autor: tharwat al choufi) geschickt hat.
Ich änderte es leicht, um den Start von einer anderen Lispe zu konsert, indem es die Auswahl der Blöcke und das Ergebnis (neue Auswahl mit den gefundenen ungültigen Blöcken) in einer Variable immer von außen gezogen.
 

Anhänge

Immagine 2023-07-23 000718.jpgin gstarcad
die Blöcke, die blaue oder grüne Einheiten enthalten, sind auf Etagen mit deaktiviertem Grundstück.
auf Befehl lavpiatti (eine Einheit), Kühlschrank (zwei Einheiten)
haben Sie (vl-load-com) zum Kopf der Lispe hinzugefügt?
 
haben Sie (vl-load-com) zum Kopf der Lispe hinzugefügt?
Ich habe es hinzugefügt, aber es funktioniert nicht. wie ich sagte, ich habe versucht, es auch Schritt für Schritt auf autocad 2012 zu drehen... aber ohne Ergebnis.
unter anderem in gstarcad 2023 ist etwas ähnlich wie der visuelle Editor von autocad.... Aber ich muss noch lernen, wie man es benutzt...
 

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