| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Mittels LISP-APP geladene Vermessungsdaten weiterverabeiten (1719 mal gelesen)
|
cadbeginner123 Mitglied
Beiträge: 55 Registriert: 19.05.2012 autocad 2009
|
erstellt am: 17. Mai. 2017 14:45 <-- editieren / zitieren --> Unities abgeben:
Hallo, Freunde, wieder einmal seid Ihr meine letzte Hoffnung. Mein Problem: ich übertrage Vermessungsdaten mittels einer LISP-Application ("acadin") in eine Vorlage-DWG, in welcher bereits die für das Reinspielen der Daten notwendigen layer angelegt sind. Die vordefinierten layer lauten: 0 (weiß) B-S (weiß) H-S (grün) PktHoehe (grün) PktNr (rot) pktring (weiß) Die LISP-App beinhaltet zwei .DEF-Dateien (ascii & messcode), die ich nach dem Start der App in Autocad (Befehl: appload) neben der Angabe des Maßstabes (1:50) laden muss. In der Zeichnung erscheinen die Messdaten dann korrekt georeferenziert als Blöcke mit je drei Attributen (weißes Punktsymbol, rote Punktbezeichnung, grüne Punkthöhe). Leider ist es so, dass ich nicht nur eine Sorte Punktdaten in der Zeichnung weiterverarbeiten muss, sondern mehrere. z.B. geodätische Messpunkte UND Nivellementwerte, die sich am besten in Block-Farbe und Block-Größe unterscheiden sollten, VOR ALLEM aber auf verschiedenen layern geparkt sein sollten, damit sie unabhängig voneinander abgeschaltet, bearbeitet, usw. werden können. Da ich die die App nicht für meine Zwecke zu verändern weiß, erscheinen die Vermessungspunkte immer auf den gleichen layern und unterscheiden sich nur in der Punktbezeichnung, da diese bereits am Vermessungsgerät definiert wird. Markiere ich nun die Messpunkt-Blöcke und lege diese auf einen von mir definierten layer (zB. Nivellementwerte), dann folgen nur die Punktsymbole ("pktring") diesem Befehl, die beiden anderen Blockattribute bleiben auf "ihren" layern, das heißt, die Punktbezeichnung bleibt auf "PktNr", die Punkthöhe auf "Pkthoehe". Um alle Blockattribute auf einen layer zuzuweisen, muss ich nun jeden Vermessungspunktblock insgesamt DREIMAL anklicken, um im ERWEITERTEN ATTRIBUTSEDITOR unter EIGENSCHAFTEN jedes einzelne Attribut auf den richtigen Layer zu legen. Wenn ich im BLOCKEDITOR die Punktbezeichnung und die Punkthöhe auf den von mir gebrauchten Layer lege, werden diese Veränderungen zwar angenommen, sie spiegeln ich nach speichern & schließen des Editors jedoch nicht in der dwg wider! Ich habe momentan auch leider keine Kontaktmöglichkeit mit dem Hersteller der App. Weiß jemand Rat? Danke für die Geduld & herzliche Grüße!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 17. Mai. 2017 15:08 <-- editieren / zitieren --> Unities abgeben: Nur für cadbeginner123
Nur um deinen jetzigen Workflow zu verbessern: Brauchen denn die Attribute einen separaten Layer? Oder reicht es wenn diese mit durch den Einfügelayer der Blockreferenz dargestellt werden? In dem Fall: Attributdefinition auf Layer0 legen, also die Blockdefinition ändern. Dann mit ATTSYNC die Eigenschaft (und alle anderen) auf die Blockreferenzen übertragen. ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 Bricscad V11-V21 pro Plateia, Canalis Visual Basic
|
erstellt am: 17. Mai. 2017 18:11 <-- editieren / zitieren --> Unities abgeben: Nur für cadbeginner123
Hallo cadbeginner123, Ich weiß nicht wo Dein Problem ist oder ich habe eine andere AcadIn.lsp wie Du. So weit ich das Programm kenne kannst Du in der Messcode.def für jeden Vermessungscode das Blocksymbol und die Layer für Block und Attribute definieren. Ergo, wenn man eine saubere Codeliste hat sollten die Elemente auch auf den von Dir gewünschten Layern erscheinen. Falls nicht => Beispieldatensatz und Wunschliste, dann kann man das einmal nachvollziehen. Grüße Klaus [Edit] Es gibt hier auch ein Lisp-Forum, da wäre die Anfrage wahrscheinlich sinnvoller gewesen [Diese Nachricht wurde von KlaK am 17. Mai. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 Bricscad V11-V21 pro Plateia, Canalis Visual Basic
|
erstellt am: 17. Mai. 2017 19:11 <-- editieren / zitieren --> Unities abgeben: Nur für cadbeginner123
Zitat: Original erstellt von cadbeginner123: Wenn ich im BLOCKEDITOR die Punktbezeichnung und die Punkthöhe auf den von mir gebrauchten Layer lege, werden diese Veränderungen zwar angenommen, sie spiegeln ich nach speichern & schließen des Editors jedoch nicht in der dwg wider!
Schon mal Attsync probiert? (Obwohl das bei acadin.lsp nicht nötig wäre)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadbeginner123 Mitglied
Beiträge: 55 Registriert: 19.05.2012 autocad 2009
|
erstellt am: 18. Mai. 2017 15:11 <-- editieren / zitieren --> Unities abgeben:
Hallo, Klaus! Was meinst Du mit "sauberer Codeliste"? Ich muss also für die unterschiedlichen Vermessungsdaten-Arten unterschiedlich messcodes schreiben ... Wenn ich die Messcode-Definitionsdatei im Editor öffne, kommt folgendes: 1 "gdk10" "2" "pktring" "PktNr" "PktHoehe" "" "" "" 2 "gdk10" "2" "s-s1" "b-s" "h-s" "" "" "" 3 "gdk3" "3" "s-s1" "b-s" "h-s" "lay3" "" "" 4 "gdk4" "4" "s-s1" "b-s" "h-s" "lay3" "lay4" "" 5 "gdk5" "5" "s-s1" "b-s" "h-s" "lay3" "lay4" "lay5" 6 "gdk07" "2" "s-s1" "c-s" "h-s" "" "" "" 7 "gdk10" "2" "s-b1" "b-b" "h-s" "" "" "" 8 "gdk10" "2" "s-g1" "b-g" "h-s" "" "" "" 9 "gdk10" "2" "s-y1" "b-y" "h-s" "" "" "" Mir ist klar, dass diese Tabelle mit den layern zu tun haben, die in der Vorlage-dwg bereits definiert sind: 0 B-S H-S PktHoehe PktNr pktring Aber wie gehts jetzt nur weiter ???????? beste Grüße, Nik
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadbeginner123 Mitglied
Beiträge: 55 Registriert: 19.05.2012 autocad 2009
|
erstellt am: 18. Mai. 2017 18:33 <-- editieren / zitieren --> Unities abgeben:
Hallo! Ich hab's schon in de Antwort an KlaK erwähnt: offensichtlich muss ich die mc.def (Messcode) für jede einzelne Vermessungsdaten-Art modifizieren. Alle benötigten Punkte in die dwg spielen und dort dann bearbeiten führt wohl zu nix, was ich brauche sind schon vor dem reinladen modifizierte Acadin-Varianten, die ich auf die unterschiedlichen Punktarten anwenden kann, also mc-Nivellement.def, mc-Vermessungspunkt.def, usw. usw. Leider hab ich wohl das Prinzip von acadin noch nicht behirnt, denn ich hab keine Ahnung, wie man messcodes und Vorlagen-dwg "umbaut", sodass die Punkte sofort nach dem Einspielen so verfasst sind, wie ich sie brauche -und vor allem einzeln zu- und wegschaltbar. Was mir besondere Rätsel aufgibt, ist die Tatsache, dass wenn ich einen Block markiere, um ihn auf einen anderen layer zu transferieren, ein Attribut (Punktring) auf diesem neuen layer erscheint, während die anderen beiden (Punktbezeichnung, Punkthöhe) dort bleiben wo sie sind. Die kann ich wie gesagt nur dann ändern, wenn ich sie im ERWEITERTEN ATTRIBUTSEDITOR jeweils auf den neuen layer verfrachte. Was wahnsinnig mühsam ist, bei hunderten oder gar tausenden Punkten. Beste Grüße, Nik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 Bricscad V11-V21 pro Plateia, Canalis Visual Basic
|
erstellt am: 18. Mai. 2017 19:58 <-- editieren / zitieren --> Unities abgeben: Nur für cadbeginner123
Hallo Nik, Ich greife jetzt mal cadffm vor und verweise auf die FAQ zu Blöcken, mir scheint Dir fehlt das generelle Verständnis zu den Blöcken Kurzform: - Es gibt EINE "Bauanleitung" für die Blöcke, diese besteht aus Zeichnungselementen und kann mit Attributen ergänzt werden. Das ist das was Du beim Block bearbeiten verändern kannst. - In die Zeichnung eingefügt werden Referenzen dieser Bauanleitungen und in einer besonderen Tabelle werden dann noch die Attributwerte dieser eingefügten Referenz gespeichert. Damit ist klar dass zwar die Blockreferenz auf unterschiedlichen Layern gezeichnet werden kann, die Bauanleitung bleibt aber so wie definiert. Allerdings ändert Dietrich (der Author dieses Programmes) die Eigenschaften der eingefügten Referenzen, also das was Du mit dem Attributeditor machen möchtest, und setzt die Layer entsprechend der Vermessungscodes in der Messcode.def. Würde man jetzt ein AttSync machen, hätten alle Werte wieder die Einstellungen der Bauanleitung. Ich weiß nicht wo Du Dir das Programm heruntergeladen hast, meins (mit Erläuterungen) stammt von hier Grüße Klaus [Edit] Ach ja:
Zitat: Original erstellt von cadbeginner123: Aber wie gehts jetzt nur weiter ????????
- Du liest Dir die pdf in der ZIP-Datei durch - Stellst Dir eine Codeliste für deine Koordinaten zusammen, die in der Datei auch vorhanden sind - Änderst die Messcode.def nach Deinen Wünschen - Erstellst die Blöcke (Bauanleitungen) in der Vorlagenzeichnung - Freust Dich das alles wie gewünscht funktioniert [Diese Nachricht wurde von KlaK am 18. Mai. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadbeginner123 Mitglied
Beiträge: 55 Registriert: 19.05.2012 autocad 2009
|
erstellt am: 19. Mai. 2017 09:48 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von KlaK: Hallo Nik,Ich greife jetzt mal cadffm vor und verweise auf die FAQ zu Blöcken, mir scheint Dir fehlt das generelle Verständnis zu den Blöcken Kurzform: - Es gibt EINE "Bauanleitung" für die Blöcke, diese besteht aus Zeichnungselementen und kann mit Attributen ergänzt werden. Das ist das was Du beim Block bearbeiten verändern kannst. - In die Zeichnung eingefügt werden Referenzen dieser Bauanleitungen und in einer besonderen Tabelle werden dann noch die Attributwerte dieser eingefügten Referenz gespeichert. Damit ist klar dass zwar die Blockreferenz auf unterschiedlichen Layern gezeichnet werden kann, die Bauanleitung bleibt aber so wie definiert. Allerdings ändert Dietrich (der Author dieses Programmes) die Eigenschaften der eingefügten Referenzen, also das was Du mit dem Attributeditor machen möchtest, und setzt die Layer entsprechend der Vermessungscodes in der Messcode.def. Würde man jetzt ein AttSync machen, hätten alle Werte wieder die Einstellungen der Bauanleitung. Ich weiß nicht wo Du Dir das Programm heruntergeladen hast, meins (mit Erläuterungen) stammt von hier Grüße Klaus [Edit] Ach ja: - Du liest Dir die pdf in der ZIP-Datei durch - Stellst Dir eine Codeliste für deine Koordinaten zusammen, die in der Datei auch vorhanden sind - Änderst die Messcode.def nach Deinen Wünschen - Erstellst die Blöcke (Bauanleitungen) in der Vorlagenzeichnung - Freust Dich das alles wie gewünscht funktioniert
[Diese Nachricht wurde von KlaK am 18. Mai. 2017 editiert.]
Hallo, Klaus! Du hast natürlich recht, ich krieg die Block-Thematik nicht auf die Reihe. Aber leider nicht nur das. Wenn ich die mc.def öffne, dann sehe eine Reihe von "codes" gelistet in 9 Zeilen. Ich "erkenne" ein paar Blöcke ("gdk10" "gdk3""gdk4" "gdk5""gdk07"), von denen eigentlich nur gdk10 interessant ist, denn der findet sich auch in der vorlage.dwg (pktring, PktHoehe, PktNR), dann folgen Zahlen, die wohl die Messcodes darstellen (1-9) Die Messcodes stehen im KOORD.txt in Spalte 39. Punkte/Koordinaten mit beispielsweise Messcode 3 werden dann mit dem Symbol bzw. auf den Layern dargestellt, die in der MC.DEF in Zeile 3 definiert sind. Aber wie ändert man das ab? Indem ich vorher in der dwg layer definiere, die ich dann in den messcode schreibe? Soweit ich das kapiere, stehen im mc.def 9 verschiedene messcodes zur Darstellung von Punkten. Vielleicht liegt mein problem darin, dass ich nur 1 messcode für mehrere punktarten verwende, dabei sollte ich jeder punktart einen andere messcode zuweisen, oder? Ich hab mal eine beispiel.dwg in den Anhang gestellt, in dem die Punkte so dargestellt sind, wie ich sie brauche. Diese ist - wenn auch stark vereinfacht - so hergerichtet, wie ich sie brauche, das heißt, die unterschiedlichen Punkte (Messpunkte zum Zeichnen der Schichten, Schicht-Nivellement, Schicht2-Nivellement, Schicht-Interface) liegen auf jeweils drei layern (die in der Realität Verfüllungsschichten in einem archäologischen Objekt darstellen, die übereinander gelagert waren und von oben nach unten dokumentiert wurden). Zustande gekommen ist das unterschiedliche Aussehen der Punkte beim reinspielen: durch unterschiedliche Maßstabs- und Farbenangaben bei der jeweiligen Abfrage in acadin. Da die Punkte nach dem Einspielen normalerweise ja alle auf den gleichen drei Layern landen (pktring, PktNr, PktHoehe), musste ich ihnen jeweils drei neue Layernamen zuordnen. Vielleicht hast Du Zeit, Dir das mal anzuschauen, würde mich sehr freuen. Grüße, Nik
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 19. Mai. 2017 10:17 <-- editieren / zitieren --> Unities abgeben: Nur für cadbeginner123
Ich habe es mal 3min. Überflogen, für den Fall das der Kenner noch nicht online ist und du schon loslegen willst. In der Hilfe ist die Funktionsweise und Definition doch schön beschrieben, aus deiner Antwort entnehme ich: Du hast es grundsätzlich verstanden. Anstatt dieses Postings hättest du also einfach die (Kopie) deiner MC.def anpassen können und wärst schon weiter - oder schon am Ziel. Mehr Mut, MACHEN und testen! Los gehts. Wenn die Referenzen wie gewünscht landen und es dann noch Fragen zu Blockdefinition und Attribute gibt, dann gehts hier weiter. Daumendrück. ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 Bricscad V11-V21 pro Plateia, Canalis Visual Basic
|
erstellt am: 19. Mai. 2017 13:51 <-- editieren / zitieren --> Unities abgeben: Nur für cadbeginner123
Hallo Nik, Werde erst heute abend dazu kommen mir einmal Deine Zeichnung anzusehen, verstehe aber Deine Probleme, wie beschrieben, nur dann wenn ich davon ausgehe dass Du Dir die verlinkte Zip nicht heruntergeladen hast und Dir die PDF auch nicht durchgesehen hast. Nur mal auf die Schnelle: Du mußt beide DEF-Dateien anpassen! In der ASCII.DEF legst Du fest wo Deine Werte in der Koordinatendatei stehen In der MessCode.DEF wird festgelegt wie die Punkte mit einsprechendem Code aus der Koordinatenliste dargestellt werden sollen Hier können ohne Programmänderung 99 Codierungen definiert werden Hast Du Layer in der Messcode.def eingetragen die noch nicht in der Zeichnung vorhanden sind, werden diese neu erzeugt und Du wirst nach der Farbe für diesen Layer gefragt. Aber wie schon geschrieben: Das steht alles in der AcadIn-Readme.pdf ! Sind nur 6 Seiten aber da ist alles erklärt. Grüße Klaus
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 Bricscad V11-V21 pro Plateia, Canalis Visual Basic
|
erstellt am: 20. Mai. 2017 00:29 <-- editieren / zitieren --> Unities abgeben: Nur für cadbeginner123
Und ? Lösung schon gefunden ? Hier einmal mit Deinen Daten die Koordinatendatei:
Code:
9 37289.8750 320446.1460 149.93 1 10 37290.1920 320446.9680 149.91 1 N1 37289.6457 320446.3887 149.79 2 N2 37289.8016 320446.8713 149.83 2 N3 37290.3641 320446.7096 149.94 2 N4 37290.3297 320446.2686 150.06 2 H17 37289.6811 320446.4440 149.67 3 H18 37290.1569 320446.6499 149.62 3 H19 37289.7686 320446.7285 149.40 3 MP5 37289.3568 320447.2418 150.02 4 MP6 37290.5337 320447.2708 150.10 4 MP7 37290.7001 320445.9586 149.33 4 MP8 37289.1544 320445.8142 149.34 4 IF13 37289.9828 320446.6632 149.79 5 IF14 37290.2498 320446.4192 149.77 5 IF15 37289.9708 320446.3482 149.80 5
Ich habe nach der PktNr, x, y, Hoehe noch den Code ergänzt, dieser ist Voraussetzung damit überhaupt etwas importiert wird. Sinnvollerweise sollte dieser als 3. Attribut auch in die Zeichnung übernommen werden dann könnte man über AttExt die gleiche Datei jederzeit wieder erzeugen. Die zugehörige ASCI.DEF
Code:
1 Spaltennummer - Beginn der Pkt.Nr. 14 Spaltennummer - Ende der Pkt.Nr. 14 Spaltennummer - Beginn von Y 28 Spaltennummer - Ende von Y 28 Spaltennummer - Beginn von X 44 Spaltennummer - Ende von X 44 Spaltennummer - Beginn der Höhe 54 Spaltennummer - Ende der Höhe 58 Spaltennummer - Beginn des Messcodes 59 Spaltennummer - Ende des Messcodes 59 Spaltennummer - Beginn des Attribut3 65 Spaltennummer - Ende des Attribut3 66 Spaltennummer - Beginn des Attribut4 71 Spaltennummer - Ende des Attribut4 72 Spaltennummer - Beginn des Attribut5 80 Spaltennummer - Ende des Attribut5 \
(gekürzt) und die MessCode.def
Code:
1 "gdk10" "2" "PktRing Befund" "PktNr Befund" "x" "" "" "" 2 "gdk10" "2" "PktRing SE Nivell" "PktNr SE Nivell" "PktHoehe SE Nivell" "" "" "" 3 "gdk10" "2" "PktRing SE Nivell 2" "PktNr SE Nivell 2" "PktHoehe SE Nivell 2" "" "" "" 4 "gdk10" "2" "PktRing mpoly" "PktNr mpoly" "PktHoehe mpoly" "" "" "" 5 "gdk10" "2" "PktRing SE IF Nivell" "PktNr SE IF Nivell" "PktrHoehe SE IF Nivell" "" "" "" 6 "gdk07" "2" "s-s1" "c-s" "h-s" "" "" "" 7 "gdk10" "3" "s-b1" "b-b" "h-s" "lay3" "" "" 8 "gdk10" "4" "s-g1" "b-g" "h-s" "lay3" "lay4" "" 9 "gdk10" "5" "s-y1" "b-y" "h-s" "lay3" "lay4" "lay5" . .
(gekürzt) Ich habe wie in der Vorlage für alle den gleichen Block (Spalte 2) verwendet, natürlich kann man hier auch jeden anderen in der Zeichnung vorhandenen eintragen wenn man, was sinnvoll wäre, unterschiedliche Darstellungen haben möchte. Mit Analyse Deiner Zeichnung 20 min. Dateien im Anhang Noch Fragen ? Schönes WE Klaus [Edit] Vielleicht noch ein Hinweis zur ASCI.DEF: Hier berechnet der Autor des Programmes die Länge des zu lesenden Textes etwas eigenartig, denn er berechnet die Länge als Ende - Anfang. D.h. ist der mögliche Beginn des Wertes bei Spalte 10 und das letzte Zeichen in Spalte 19 ergibt sich damit eine Länge von 9 Zeichen (richtig wäre 10 Zeichen), das letzte Zeichen würde also nicht mit gelesen. Deshalb immer die Spaltenzahl NACH dem letzten Wert anzugeben. Dies ist normalerweise dann auch der Beginn des nächsten Werten, was die Angaben in der Datei einfacher macht.
[Diese Nachricht wurde von KlaK am 20. Mai. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|