| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | PNY wird von NVIDIA zum Händler des Jahres gewählt - zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: Block einfügen mit geänderten Attributen? (2565 mal gelesen)
|
OlliBaer Mitglied Dipl. Ing. TGA

 Beiträge: 19 Registriert: 06.08.2003
|
erstellt am: 19. Aug. 2003 11:10 <-- editieren / zitieren --> Unities abgeben:         
Hallo, ich noch mal... ich hab mir ein programm geschrieben, welches mir alle blöcke in der Zeichnung anzeigt, die attribute besitzen. bei bedarf kann man die attribute aller blöcke an excel übergeben, ändern und zurücklesen. manchmal kommt es vor, das ich z.B. eine Teilstrecke (Ts1, 80kg/h, 100Pa/m) vergessen habe und diese nun beim zurücklesen in die zeichnung einsetzen möchte. (bis dahin klappt auch alles) der eizusetzende block müsste aber die geänderten attribute haben. die Frage: wie kann ich einen block mit geänderten attributen einsetzen? 1. block auswählen 2. Attribute setzen 3. in zeichnung einfuegen danke, bis dahin Olli Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
harryk Mitglied Projektleiter
 
 Beiträge: 124 Registriert: 19.08.2003 Revit 2019, ACMep2019, F360
|
erstellt am: 19. Aug. 2003 12:32 <-- editieren / zitieren --> Unities abgeben:          Nur für OlliBaer
hi, also Du hast die Blöcke nach Excel ausgelesen, berechnest meinetwegen irgendwas ond möchtest die Werte oder was auch immer zurück in den Block schreiben? Wenn ja dann hier der Lösungsansatz: Beim auslesen das Handle (objBlock.Handle) mit in die Exceltabelle schreiben, über dieses Handle kannst Du den Block schnell wiederfinden und die neuen Werte zuweisen Set objBlock = ThisDrawing.HandleToObject("Handle") objBlock.GetAttributes usw.... May it helps! Harry Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
OlliBaer Mitglied Dipl. Ing. TGA

 Beiträge: 19 Registriert: 06.08.2003
|
erstellt am: 19. Aug. 2003 12:56 <-- editieren / zitieren --> Unities abgeben:         
Danke für schnelle antwort, also das zurückschreiben der geänderten attribute in die in der Zeichnungs vorhandenen blöcke funktioniert. ich übergebe an die exceltabelle den blockname und die momentane ID, dadurch kann ich jeden block identifizieren. Ungefähr so (Excel) Blockname Objekt-ID [KG/H] [WATT] [TEMP] [NR] NR3 1074456800 51,55 600 20°C 1 NR3 1074456248 25,78 300 20°C 2 NR3 1074456200 42,96 500 20°C 3 NR3 ->0815<- 0 0 15°C 4 aber wenn ich in der exceltabelle eine spalte einfüge, mit einem blocknamen und einer unbekannten id, soll dieser block mit den entsprechenden attributen eingefügt werden.
I hope u can help me ;-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RoSiNiNo Mitglied Konstrukteur
   
 Beiträge: 1126 Registriert: 09.10.2002 Acad 2011-deutsch, Express Tools 3ds Max 2010 Win 7-Professional HP Workstation Z400, 6GB GeForce GTX 470
|
erstellt am: 19. Aug. 2003 13:32 <-- editieren / zitieren --> Unities abgeben:          Nur für OlliBaer
Wo ist das Problem? Du mußt ja nur beim Einlesen schauen, ob eine ID in der Excel-Tabelle drin ist oder nicht. Wenn keine ID eingetragen ist, na dann setzt einfach einen Block ein und übertrag einfach die Werte. Noch schöner wäre es, wenn du die neue ID gleich in die Excel-Tabelle reinschreiben würdest. ------------------ Roland Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
OlliBaer Mitglied Dipl. Ing. TGA

 Beiträge: 19 Registriert: 06.08.2003
|
erstellt am: 19. Aug. 2003 14:22 <-- editieren / zitieren --> Unities abgeben:         
so, jetzt habens wir ja bald :-) wenn ich mittels Set blockref = ThisDrawing.ModelSpace.InsertBlock(einfuege, blockname, 1, 1, 1, 0) einen block einfuege, wie kann ich im vorfeld (vor dem setzen) die attribute ändern??!! Das war eigentlich die ursprünglich frage ;-) gruß olli Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RoSiNiNo Mitglied Konstrukteur
   
 Beiträge: 1126 Registriert: 09.10.2002 Acad 2011-deutsch, Express Tools 3ds Max 2010 Win 7-Professional HP Workstation Z400, 6GB GeForce GTX 470
|
erstellt am: 19. Aug. 2003 14:31 <-- editieren / zitieren --> Unities abgeben:          Nur für OlliBaer
|
OlliBaer Mitglied Dipl. Ing. TGA

 Beiträge: 19 Registriert: 06.08.2003
|
erstellt am: 19. Aug. 2003 15:05 <-- editieren / zitieren --> Unities abgeben:         
das mach ich ja, aber wie kann ich den soeben eingesetzten block identifizieren?, so dass ich die attribute einlesen bzw. ändern kann. das problem ist: bei der übergabe von excel an acad, wird die tabelle von oben nach unten abgearbeitet. wenn nun 30 blöcke in der tabelle stehen und an der stelle 10 ist ein block der nicht in der zeichnung ist!, wird dieser eingefügt und muss dann geändert werden. danach müssen die blöcke 11-30 weiter geändert werden. Hier werden sie geholfen Olli :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RoSiNiNo Mitglied Konstrukteur
   
 Beiträge: 1126 Registriert: 09.10.2002 Acad 2011-deutsch, Express Tools 3ds Max 2010 Win 7-Professional HP Workstation Z400, 6GB GeForce GTX 470
|
erstellt am: 19. Aug. 2003 15:41 <-- editieren / zitieren --> Unities abgeben:          Nur für OlliBaer
Das ist ja klar, einfach den Block einfügen und gleich die Attribute ausfüllen. Du hast ja mit Set blockref = ThisDrawing.ModelSpace.InsertBlock(einfuege, blockname, 1, 1, 1, 0) den Block schon eingefügt. Jetzt mußt du nur die Daten in die Attribute von blockref einsetzen, dann setzt du Set blockref = nothing, nun machst du einfach mit deiner Schleife weiter. ------------------ Roland [Diese Nachricht wurde von RoSiNiNo am 19. August 2003 editiert.] [Diese Nachricht wurde von RoSiNiNo am 19. August 2003 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
harryk Mitglied Projektleiter
 
 Beiträge: 124 Registriert: 19.08.2003
|
erstellt am: 19. Aug. 2003 16:28 <-- editieren / zitieren --> Unities abgeben:          Nur für OlliBaer
jepp, jetzt kapier ich was Du meinst. Wie oben beschrieben gehts, aber ist der Block denn nicht etwas verloren an "irgendeiner" Koordinate?? Vielleicht wäre da noch eine Benutzeraktion in AutoCad angebracht. Las mal hören wie du Dir das vorgestellt hast, ist interessant. Harry Ps:irgendwas mit Kälte und oder Druckverlust? [Diese Nachricht wurde von harryk am 19. August 2003 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RoSiNiNo Mitglied Konstrukteur
   
 Beiträge: 1126 Registriert: 09.10.2002 Acad 2011-deutsch, Express Tools 3ds Max 2010 Win 7-Professional HP Workstation Z400, 6GB GeForce GTX 470
|
erstellt am: 19. Aug. 2003 16:36 <-- editieren / zitieren --> Unities abgeben:          Nur für OlliBaer
|
OlliBaer Mitglied Dipl. Ing. TGA

 Beiträge: 19 Registriert: 06.08.2003
|
erstellt am: 19. Aug. 2003 18:59 <-- editieren / zitieren --> Unities abgeben:         
Ui, was hat sich denn jetzt getan :-)) bin jetzt zu hause und kann es nicht mehr testen. muss ich aber morgen mal ausprobiere. danke schon mal. an harryk: natürlich wird beim einfügen nach dem einfugepunkt (einfuege) gefragt.:einfuege = ThisDrawing.Utility.GetPoint(, "Einfügepunkt wählen") (s.Forum:block einfuegen?? einmal anders) ;-) und ja, das ganze soll mit meinem raumbuch (EXCEL)verknüpft sein, wenn es denn mal klappt. so soll es dann möglich sein, raumnummern zu vergeben und die anderen daten (temp.,m², raumname, etc)aus excel zu holen und entsprechend zuzuordnen... dito für Teilstrecken (heizung, kälte) und stücklisten (heizkörper) im prinzip, für jeden block mit attributen. tschau,bis morgen Olli Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RoSiNiNo Mitglied Konstrukteur
   
 Beiträge: 1126 Registriert: 09.10.2002 Acad 2011-deutsch, Express Tools 3ds Max 2010 Win 7-Professional HP Workstation Z400, 6GB GeForce GTX 470
|
erstellt am: 20. Aug. 2003 06:48 <-- editieren / zitieren --> Unities abgeben:          Nur für OlliBaer
|
OlliBaer Mitglied Dipl. Ing. TGA

 Beiträge: 19 Registriert: 06.08.2003
|
erstellt am: 20. Aug. 2003 07:56 <-- editieren / zitieren --> Unities abgeben:         
|
harryk Mitglied Projektleiter
 
 Beiträge: 124 Registriert: 19.08.2003 Revit 2019, ACMep2019, F360
|
erstellt am: 20. Aug. 2003 08:32 <-- editieren / zitieren --> Unities abgeben:          Nur für OlliBaer
Obwohl Access ne Datenbankkrükke sein soll, gegenüber Excel ist das eine Rakete. Hab unsere Zeichnungs Projektverwaltung auf mdb umgestellt und spreche die mit ADO an, geht wie Schmitz's Katze. Jetzt folgt der mySql Server um noch mehr Dampf zu kriegen. Allerdings lassen sich Excel Dateien auch als Datenbank ansprechen, in Verbindung mit dem Flexgrid Steuerelement kannst Du den grössten Teil direkt von AutoCad aus steuern und benutzt Excel nur noch zum Rechnen und für die Berichte. Gruss, Harry [Diese Nachricht wurde von harryk am 20. August 2003 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
OlliBaer Mitglied Dipl. Ing. TGA

 Beiträge: 19 Registriert: 06.08.2003
|
erstellt am: 20. Aug. 2003 10:00 <-- editieren / zitieren --> Unities abgeben:         
|

| |
OlliBaer Mitglied Dipl. Ing. TGA

 Beiträge: 19 Registriert: 06.08.2003
|
erstellt am: 21. Aug. 2003 07:59 <-- editieren / zitieren --> Unities abgeben:         
@RoSiNiNo Das war genau der Hinweis, der mir fehlte und so einfach... jetzt klappt alles: einfuege = ThisDrawing.Utility.GetPoint(, "Bitte den Einfügepunkt für Block " & name & " wählen") Set blockref = ThisDrawing.ModelSpace.InsertBlock(einfuege, name, 1, 1, 1, 0) Tatts3 = blockref.GetAttributes 'alle in Merker2 (Excel) gespeicherten Werte an Tatts3 übergeben 'in count2 ist die Menge der Attribute gespeichert I = 0 For I = 0 To count2 - 1 Tatts3(I).TextString = Merker2(I + 2) Next blockref.Update blockref = Nothing danke an alle, Olli Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |