Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  Blöcke neu definieren über Script

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Blöcke neu definieren über Script (1939 mal gelesen)

Ex-Mitglied

erstellt am: 04. Nov. 2005 11:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hallo,

ich weiß das schon vieles über das "neu definieren von Blöcken" geschrieben wurde. Aber da habe ich leider nicht das gefunden, was wir suchen.

Sorry, wenn ich hier einen Roman schreibe, aber ich denke das dies zum Verständnis unseres Problems beiträgt.

Unsere Blöcke haben Attribute, die in eine Oracle-Datenbank geschrieben und über Datenbankreports weiter verarbeitet werden.
Das Aussehen der Blöcke ist Kundenspezifisch. Bei neuen Kunden liegt die Spezifikation für das Aussehen meistens nicht rechtzeitig vor. Wir verwenden dann vorerst vorhandene Darstellungen. Nach Erhalt der Spezifikation werden die neuen Blöcke erstellt (unter den gleichen Namen) und müssen in den bereits erstellten Plänen ausgetauscht werden.

Manuell kann ich dies machen mit dem Befehl "einfüge", Block auswählen und das Häkchen bei "Einfügepunkt" entfernen. Damit wird kein neuer Block eingfügt, sondern nur die gleichnamigen ausgetauscht.

Ich habe mal gehört, das man alles, was per Hand möglich ist, auch durch ein Script ausgeführt werden kann.

Wie kann ich in einem Script das Häkchen beim Einfügepunkt löschen?

Gruss Frederik

cadffm
Moderator
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 04. Nov. 2005 11:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Geh in die Hilfe und suche nach: Befehlszeile EINFÜGE
Da stehen "alle" Infos zu Blockeinfügen über die Befehlszeile drin.

wird dir aber SO nicht helfen, Skripte lassen keine Benutzereingaben zu !


EDIT: Frage: liegen die "neuen" Blockdefinitionen als DWG vor oder
oder hast du die neuen alle in einer DWG eingefügt !?

Falls in einer Bibliothek-DWG:  Nutze evtl den DesignCenter !
rechte Maustaste auf den jeweiligen Block und "Nur neudefinieren"

Falls als DWG - nenne ich dir noch ein paar andere Wege..
(oben genannte Möglichkeit wäre aber auch hier anwendbar in ähnlicher Form)

Frage: Wieviele Blöcke (nicht wieviele Blockreferenzen) sind es denn pro Datei ?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 04. Nov. 2005 12:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hallo cadffm,

wir machen Eisenbahnsignaltechnik und haben verschiedene Anwendungen mit ca 180 bis 550 unterschiedlichen Blöcken je Anwendung und Kunde.
Diese Blöcke sind jeweils eine einzelne DWG (z.B. eine Weiche, ein Rangiersignal, u.s.w.) die über selbst geschriebene Menüs und Programme in eine Zeichnung eingefügt und mit Koordinaten und Attributen in eine Datenbank geschrieben werden.

Die Zeichnungen enthalten dann bis zu 4000 Blöcke.

Die Blöcke erstelle ich in thematisch sortierten DWG's (etwa 50-100 je DWG) und extrahiere sie daraus zu einzelnen DWG's mit einem Script.

-wblock <pfad & name> j  <x,y Einfügepunkt> f <x,y untere linke Ecke> <x,y obere rechte Ecke>  hoppla

So ein Script wollte ich jetzt auch zum Neudefinieren machen. Dabei habe ich noch keinen Syntax für das Häkchen beim Einfügepunkt gefunden.

Gruss Frederik

Caladia
Ehrenmitglied V.I.P. h.c.




Sehen Sie sich das Profil von Caladia an!   Senden Sie eine Private Message an Caladia  Schreiben Sie einen Gästebucheintrag für Caladia

Beiträge: 2546
Registriert: 04.03.2002

ACAD2009
ACAD2010 SP2
ACAD2011 SP1
ABDS-S 2012 SP2
ABDS-S 2013 SP2
ABDS-S 2014 SP1
ABDS-S 2015 SP2
ABDS-S 2016
Expresstools
A3-Makroboard
16-Tasten Lupe
Impression 3
Win7 64bit
IE11
Firefox
Office2003 SP3

erstellt am: 04. Nov. 2005 12:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Oh die Frage kenn ich!
Einzige brauchbare Antwort war:
(command "_-insert"  "Blockeplatzhalter=Blockeplatzhalter.DWG" )

wobei "Blockeplatzhalter" der Name des entsprechenden Blockes ist.
Eine Systemvariable wär mir auch lieber gewesen.

------------------
Gruss
Caladia

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadffm
Moderator
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 04. Nov. 2005 12:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Das Häckchen benötigst du nicht, in der angebenen Hilfe ist beschrieben das man mit der Eingabe:

-EINFÜGE (Pfad+Dateiname)= J

Also mal ein Beispiel:

-EINFÜGE C:\BIBO\MEINBLOCK1.dwg= J

so würde er den Block "Meinblock1 in der DWG in der man sich befindet neudefinieren (wenn ein solcher Block dort existiert)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 04. Nov. 2005 13:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

@Caladia,

dabei bleibt aber der neue Block am Fadenkreuz.
Da ich den aber nicht neu einfügen will, sondern nur alle als tabellarische Abarbeitung austauschen will, hilft dies leider nicht weiter.

@cadffm,

dabei erscheint eine Meldung "Warnung: Falls Sie den langen Dateinamen c:\xxx\yyy.dwg einfügen möchten, müssen Sie die Syntax <Block>=<Dateiname> verwenden." und die Funktion ist beendet.

Gruss Frederik

tunnelbauer
Ehrenmitglied V.I.P. h.c.
Bauingenieur



Sehen Sie sich das Profil von tunnelbauer an!   Senden Sie eine Private Message an tunnelbauer  Schreiben Sie einen Gästebucheintrag für tunnelbauer

Beiträge: 7085
Registriert: 13.01.2004

Sie nannten ihn google.

erstellt am: 04. Nov. 2005 13:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

probier mal:

Code:

(command "-insert" "Blockname=LW:/Verzeichnis/Unterverzeichnis/Name-der-dwg.dwg" nil)

------------------
Grüsse

Thomas

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



Sehen Sie sich das Profil von marc.scherer an!   Senden Sie eine Private Message an marc.scherer  Schreiben Sie einen Gästebucheintrag für marc.scherer

Beiträge: 2490
Registriert: 02.11.2001

Windows 10 64bit
AutoCAD Architecture 2018/2019 (deu/eng)
AEC-Collection 2019 (Revit und Zeugs)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung (mies implementierter Schrott)

erstellt am: 04. Nov. 2005 15:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi,
ich benutze dafür immer so etwas in dieser Art hier:
Code:

(vl-load-com)

(defun MS:NO-XREF (/ BLIST BCOLL OBJ)
  (setq BCOLL (vla-get-blocks
                (vla-get-activedocument (vlax-get-acad-object))
              )
  )
  (if (> (vla-get-count BCOLL) 0)
    (progn
      (vlax-for FORITEM BCOLL
        (setq BLIST (cons FORITEM BLIST))
      )
      (vl-remove-if
        (function (lambda (X)
                    (apply '(lambda (OBJ /)
                              (if (= (vla-get-isxref OBJ)
                                    :vlax-true
                                  )
                                't
                              )
                            )
                          (list X)
                    )
                  )
        )
        BLIST
      )
    )
  )
)


(defun UPDATE-INTERNAL-BLOCKS
      (/ ALT_ATTDIA ALT_ATTREQ BNAMES! LASTELEM X)
  (vl-load-com)
  (setq ALT_ATTREQ (getvar "attreq")
        ALT_ATTDIA (getvar "attdia")
  )
  (setvar "attreq" 0)
  (setvar "attdia" 0)

  (if (setq BNAMES!
            (vl-remove-if-not
              '(lambda (X)
                  (findfile X)
                )
              (mapcar
                '(lambda (X)
                    (strcat X ".dwg")
                  )
                (vl-remove-if
                  '(lambda (X)
                      (wcmatch X "_*,`**")
                    )
                  (mapcar 'strcase
                          (mapcar '(lambda (X) (vla-get-name X)) (MS:NO-XREF))
                  )
                )
              )
            )
      )
    (foreach ELEM BNAMES!
      (if (vl-cmdf
            "_.-insert"
            (strcat (vl-string-right-trim ".dwg" ELEM) "=")
            ;|"_y" |;
            "0,0"
            ""
            ""
            ""
          )
        (progn
          (vlax-invoke-method
            (setq LASTELEM (vlax-ename->vla-object (entlast)))
            'DELETE
          )
          (if (not (vlax-object-released-p LASTELEM))
            (vlax-release-object LASTELEM)
          )
        )

      )
    )
  )
  (setvar "attreq" ALT_ATTREQ)
  (setvar "attdia" ALT_ATTDIA)
  BNAMES!
)
(UPDATE-INTERNAL-BLOCKS)


Laden und vergessen ;-)
Findet sich im Acad-Suchpfad ein Block mit dem gleichen Namen wie innerhalb der Zeichnung, wird das Ding upgedatet. Wenn nicht, dann nicht.
Vorsicht ist danach aber mit ATTSYNC geboten, habt's Ihr die Attribut Positionen verschoben werden die nach Attsync auch resettet.
Also genau überlegen was man tut!

------------------
Ciao,
Marc

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 07. Nov. 2005 14:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Vielen Dank für Eure Hilfe. Units sind unterwegs.

Die Verwendung eines Scripts scheitert an dem Esc, das ich am Ende der Funktion "-einfüge" brauche, um den neuen Block nicht zu positionieren. Das Esc beendet sowohl die Funktion, als auch das Script.

Die Attribute wären kein Problem gewesen. Die lassen sich über das Script neu positionieren.

Nachdem es keine einfache Lösung gibt, haben wir uns jetzt entschlossen, eine neue Funktion in unsere ARX-Programmierung aufzunehmen.

Gruss Frederik

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



Sehen Sie sich das Profil von marc.scherer an!   Senden Sie eine Private Message an marc.scherer  Schreiben Sie einen Gästebucheintrag für marc.scherer

Beiträge: 2490
Registriert: 02.11.2001

Windows 10 64bit
AutoCAD Architecture 2018/2019 (deu/eng)
AEC-Collection 2019 (Revit und Zeugs)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung (mies implementierter Schrott)

erstellt am: 07. Nov. 2005 16:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Meine Funktion benötigt gar kein ESC, was funzt an der nicht?

------------------
Ciao,
Marc

[Diese Nachricht wurde von marc.scherer am 07. Nov. 2005 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 07. Nov. 2005 16:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

@Marc,

dies ist richtig, aber passt leider nicht ganz zu der Aufgabe.

Ich schicke Dir mal eine PM, weil das hier sonst zu viel wird.

Gruss Frederik

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz