| | | 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: Diplomarbeit (2461 mal gelesen)
|
skyzem Mitglied
Beiträge: 400 Registriert: 30.08.2006
|
erstellt am: 09. Dez. 2010 14:03 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich darf für mein Studium in Elektrotechnik eine Diplomarbeit schreiben. Das Ziel (meine Idee) umfasst, das automatische Erkennen von Kabelbäumen (Polylinien). Diese sollen dann je nach vorhandenen Eigenschaften berechnet werden können. Gegeben ist sicher immer die Länge eines Teilkabels. Zum einen soll der minimale Kurzschlussstrom berechnet werden. Auch die Leiterquerschnitte und die Verlustspannung/Verlustleistung. Dies soll euch aber nicht kümmern, denn das ist ja meine Aufgabe. Meine Frage ist eher, wie oder ob ich es überhaupt realisieren kann. Hier meine Grundidee: Ein Kabel (Polylinie) startet z.B. von einer Verteilkabine verläuft dann im Kabeltrasse/Rohranlage mehrere hundert Meter weit zu einer Abzweigdose. Dort wird die Leitung aufgeteilt und sagen wir zwei Zweigkabel entspringen. Eines zu einem Verbraucher eines zu einer nächsten Abzweigdose u.s.w. Das ganze basiert auf einem Katasterplan. Ich kann also die wahren Längen schon einmal direkt aus ACAD herauslesen. Wie kann ich einfach und effizent (hier wird ja nur ein Lösungsvorschlag gesucht und keine Lösung) diese 3 Kabel als zusammenhängend identifizieren. Etwa durch die physikalische Nähe zur Abzweigdose? Ist eine solche Erkennung durch LISP möglich? Gibt es eine elegantere Variante? Muss ich, wenn ich mehrere Kabel im gleichen Rohrblock habe (Überlagerung von Polylinien), zwingend über Layerzuweisung der Kabel gehen, oder gibt es auch hier alternativen? Wie man sieht habe ich noch viele Fragen. Ich hoffe durch ein paar Inputs von euch eine etwas gescheite, effiziente und endbenutzerfreundliche Struktur in mein Programm zu bekommen. Schon mal im Voraus vielen Dank für eure Bemühungen. Ps. Von AutoLISP habe ich im Moment noch keine grossen Kentnisse. Darum auch die Bitte um Ansätze und eher weniger Codebeispiele - das soll ja meine Aufgabe bleiben. ------------------ MfG skyzem Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 09. Dez. 2010 14:53 <-- editieren / zitieren --> Unities abgeben: Nur für skyzem
hi hört sich ja nach viel Arbeit an ;-) du kannst von einer Polylinie Anfangs- und Endpunkt ermitteln, den Endpunkt kannst du als Auswahlpunkt für die nächsten Objekte (Kabel) nutzen Alle Objekte die du findest kannst du natürlich filtern und aussortieren. Je nach arbeitsweise wären Layer oder andere eindeutige Kennzeichnungen (xdata) nicht verkehrt - ein kleines Beispiel zur Veranschaulichung schadet auch nicht. mit Angaben zum ist und zur Länge bzw welche Infos du abgreifen willst... na dann viel Spaß ------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wronzky Ehrenmitglied V.I.P. h.c. CAD-Dienstleistungen für Architekten
Beiträge: 2154 Registriert: 02.05.2005 CAD: AutoCAD 2.6 bis 2014 ADT 2005 - 2014 Arcibem System: Windows 2000, XP, NO VISTA Internet-Startseite: http://www.archi.de
|
erstellt am: 09. Dez. 2010 14:59 <-- editieren / zitieren --> Unities abgeben: Nur für skyzem
Hallo, da gibt es einige Möglichkeiten, die Frage ist, wie die Daten vorliegen, und wie sie eingegeben wurden. - Schliessen z.B. zusammengehörige Kabel direkt aneinander an, könntest Du einen Endpunktvergleich durchführen. - Du könntest den Kabeln (= Polylinie) auch X-Data anhängen, die eine eindeutige Identifizierung zulassen: Kabel 1 -> Dose -> Kabel 1.1 + Kabel 1.2 [Edit] oh mann viel zu langsam, ich geh' wieder Schlafen [/Edit] Grüsse, Henning ------------------ Henning Jesse VoxelManufaktur Computer-Dienstleistungen für Architekten und Ingenieure http://www.voxelman.de [Diese Nachricht wurde von wronzky am 09. Dez. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
skyzem Mitglied
Beiträge: 400 Registriert: 30.08.2006
|
erstellt am: 09. Dez. 2010 15:22 <-- editieren / zitieren --> Unities abgeben:
Super, genau solche Sachen wollte ich Lesen. - XData - Endpunktvergleich - ... XData klingt für mich jetzt praktischer, da diese Kabel dann auch (später also nicht in meiner DA) zu einer Kabelliste hinzugefügt werden können. Und da ist eine eindeutige Identifizierung der Kabel also doch äusserst praktisch Das tolle daran ist, dass noch keine Daten vorliegen. Ich kann also bestimmen wie sie vorliegen und eingegeben werden müssen. Das Ganze soll dann einfach nicht nur ich gebrauchen können, sondern auch Leute die davon wenig bis keine Ahnung haben. Phua, was hab ich mir da ausgesucht Seht ihr eventuell schon einen groben Stolperstein oder sonstige Übermannungen meinerseits?
------------------ MfG skyzem Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 09. Dez. 2010 15:48 <-- editieren / zitieren --> Unities abgeben: Nur für skyzem
Zitat: Original erstellt von skyzem: Super, genau solche Sachen wollte ich Lesen.Seht ihr eventuell schon einen groben Stolperstein oder sonstige Übermannungen meinerseits?
Zitat: Original erstellt von skyzem: Ps. Von AutoLISP habe ich im Moment noch keine grossen Kentnisse. Darum auch die Bitte um Ansätze und eher weniger Codebeispiele - das soll ja meine Aufgabe bleiben.
... den Stolperstein hast du doch schon allein gefunden ------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
skyzem Mitglied
Beiträge: 400 Registriert: 30.08.2006
|
erstellt am: 09. Dez. 2010 16:11 <-- editieren / zitieren --> Unities abgeben:
|
Ex-Mitglied
|
erstellt am: 09. Dez. 2010 18:05 <-- editieren / zitieren -->
Hi, >> Das ganze basiert auf einem Katasterplan. >> Ich kann also die wahren Längen schon einmal direkt aus ACAD herauslesen. Na hoppala, bei uns sind Katasterdaten 2D-Daten, die wahre Länge bekommst Du, wenn Du 2D-Polylinien auf Z=0 zeichnest, leider nicht raus. Alle Erdkabel haben meist auch ein Gefälle, die werden ja nicht 'horizontal' in die Erde gelegt. Alle Hochspannungsleitungen an Masten folgen ebenfalls dem Gefälle zwischen den beiden Masten + (kommt noch dazu) hier hast Du auch gleich noch einen Durchhang mit dabei. Vielleicht hab ich nicht aufmerksam genug gelesen, sollte nur kleiner Hinweis in bezug auf 'wahre Längen' sein. - alfred - ------------------ www.hollaus.at |
skyzem Mitglied
Beiträge: 400 Registriert: 30.08.2006
|
erstellt am: 09. Dez. 2010 19:07 <-- editieren / zitieren --> Unities abgeben:
Hoppla. Da hast du recht. Also um Freileitungen muss ich mich zum Glück nicht kümmern. Sind alles Leitungen in Rohren. Aber das mit dem Gefälle stimmt schon. Auch muss ich zum Beispiel in einem Zugschacht ab und an eine Schlaufe einberechnen (+5m Kabel). Dies würde ich gerne so realisieren, dass wenn ein Kabel den Block "Schacht" durchquert, berührt das Kabel dann um 3m verlängert wird. Jaja, hier gibt es noch viel zu überprüfen... ------------------ MfG skyzem Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 10. Dez. 2010 07:58 <-- editieren / zitieren --> Unities abgeben: Nur für skyzem
Hallo, die Aufgabe klingt ähnlich einer, die ich im Laufe der Jahre bereits lösen durfte. Hier ging es um die Berechnung der Luftmassenströme. Die Luftmassen werden zwar nicht durch Kabel geleitet, aber durch Kanäle. Die erforderlichen Massen am Ausgang waren berechnet. Das Lüftungskanalnetz war gezeichnet. Nun bestand die Aufgabe darin, herauszufinden, welche Luftmasse in das System hineingegeben werden muss. Die Kernaufgabe bestand folglich darin Weg vom Ausgang(Ende) zurück zum Anfang zu verfolgen. Diesen Ansatz würde auch ich dir für deine Aufgabenstellung empfehlen. Damit hast du eine eindeutige Verknüpfung eines Elementes mit einem Vorgängerelement. Anders herum hast du keine eindeutige Verknüpfung mehr, denn jedes Element kann mehrere (unbestimmt wieviele es sind) Nachfolgeelemente haben. Für das Lösen der Aufgabenstellung benötigst du dann nur die Objekte: - Start-Element - End-Element - Verbindungs-Element(Kabel)
Die Eigenschaften derer sehen wie folgt aus: - Start-Element: ... + techn. Eigenschaften ... + kein Vorgänger ... + (wird von n Elementen als Vorgänger referenziert) - End-Element: ... + 1 Vorgänger ... + techn. Eigenschaften ... + (es wird von keinem anderen Element als Vorgänger referenziert) - Verbindungs-Element(Kabel) ... + 1 Vorgänger ... + techn. Eigenschaften ... + (wird von n Elementen als Vorgänger referenziert) Du musst also Wege finden, - die techn. Eigenschaften - den Vorgänger eines Objektes am Objekt selber hinzuzufügen/ändern/löschen zu können. Das geht mit XData, die bereits erwähnt wurden. Du musst weiterhin einen Weg finden, - den Vorgänger zu identifizieren. Das geht tatsächlich nur über den Koordinatenvergleich und durch das Verfolgen der am untersuchten Endpunkt gefundenen n Vorgänger, ob die denn tatsächlich einen Weg zum Start darstellen. Das ist sehr rechenintensiv, kann aber dadurch vereinfacht werden, in dem man an den Knoten (Verzweigungen) die anschließenden Elemente untersucht, ob denn dort die gefundenen Verbindungs-Elemente bereits untereinander Referenzierungen aufweisen. Folglich wird die Wegberechnung, je mehr Wege von den Endelementen bereits gefunden wurden immer schneller. Die restlichen Berechnungen (ich denke mal, dass ich da nichts falsches behaupte) sollten, wenn die Wege klar sind, ein Kinderspiel sein. Auch wenn man die Aufgabe sicher mit Lisp lösen kann. Ich würde an deiner Stelle untersuchen, ob nicht mit anderen Programmiersprachen, die Aufgabe leichter zu lösen ist. Zum Beispiel kannst du in einer Objektorientierten Umgebung die o.g. 3 Objekte deutlich einfacher abbilden. Da viele der notwendigen Berechnungen unabhängig vom CAD-System durchgeführt werden können, würde ich auch den Weg untersuchen, ob man die Zeichnungselemente nicht besser mit einer Datenbank verknüpft und die Eigenschaften besser in dieser Datenbank vorhält. Das hätte den Vorteil, dass man die Abfragen in einfachen SQL-Strings abbilden kann. Das in Verbindung mit einer OO-Programmierung sollte aus meiner Sicht am schnellsten zu programmieren sein, die Berechnungen schneller errechnet und deutlich flexibler zu erweitern/ändern sein. Das sind jetzt mal so meine spontanen Überlegungen. Bei Fragen ... Grüße Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
skyzem Mitglied
Beiträge: 400 Registriert: 30.08.2006
|
erstellt am: 24. Mai. 2011 10:34 <-- editieren / zitieren --> Unities abgeben:
Info: Ich bin daran dies nun mit VBA zu realisieren. Wir (Büro) sind mittlerweile auch auf BricsCAD umgestiegen - eine art AutoCAD-Klon. Dies unterstützt leider noch kein .NET. XData und Koordinaten der Bearbeitungspunkte der Polylinien spielen da aber immer noch eine grosse Rolle. Jedenfalls Danke ich nochmals für eure Hilfe! ------------------ MfG skyzem Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 24. Mai. 2011 11:46 <-- editieren / zitieren --> Unities abgeben: Nur für skyzem
Zitat: Original erstellt von skyzem: Info:Ich bin daran dies nun mit VBA zu realisieren. Wir (Büro) sind mittlerweile auch auf BricsCAD umgestiegen - eine art AutoCAD-Klon. Dies unterstützt leider noch kein .NET.
Doch, die neueste Betaversion von BricsCAD unterstützt .Net. Du kannst als Diplomand sicherlich eine kostenfreie Entwicklerversion kriegen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bitte ein Bit Mitglied Informatiker
Beiträge: 27 Registriert: 26.02.2008
|
erstellt am: 31. Mai. 2011 10:51 <-- editieren / zitieren --> Unities abgeben: Nur für skyzem
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 31. Mai. 2011 11:12 <-- editieren / zitieren --> Unities abgeben: Nur für skyzem
|
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 31. Mai. 2011 12:03 <-- editieren / zitieren --> Unities abgeben: Nur für skyzem
Zitat: Original erstellt von Bitte ein Bit: Gute Entscheidung nicht Lisp zu nehmen, denn Lisp ist schlichtweg an vielen Ecken und Kanten grausam und bietet nicht die Annehmlichkeiten anderer Programmiersprachen.
Dein Einwand ist auch aus informationstheoretischer Sicht einfach falsch: es gibt kaum eine "höhere" Programmiersprache als Lisp. Ach, was wäre ich froh, wenn irgend eine andere, weiter verbreitete Programmiersprache auch nur ganz wenig von den Annehmlichkeiten von Lisp bieten würde. Naja, eine gibt's: Python. Python ist wie Lisp ohne Klammern (dafür mit syntaktisch notwendigen Einrückungen, die den Lisp-Programmierer am Anfang ziemlich nerven). Wer für die Programmierung nicht darauf angewiesen ist, das letzte bißchen Performance aus seinem Rechner zu ziehen, und nicht für AutoCAD programmiert, der verwendet heute Python. Das ist, wie Lisp, eine vollständig dynamische Sprache (also ohne Typfestlegung der Variablen), ist vollständig objektorientiert, und ist eine Interpretersprache, mit der man sehr viel schneller entwickeln kann als mit den meisten anderen Sprachen außer Lisp. Wissenschaftler verwenden heute kaum noch was anderes (google mal nach MathPlotLib, SciPy, SymPy, und wenn Du wirklich nette 3D-Simulationen physikalischer Experimente anstellen willst, nach vPython - das sind alles freie Libraries für das freie Python). Wer mit .Net programmieren muss, der hat die Möglichkeit, z.B. in SharpDevelop oder VisualStudio mit IronPython zu programmieren. Das läuft dann auch in der CRT Umgebung, so dass man z.B. aus C# heraus auf Python-Klassen zugreifen kann. Damit kann man dann sogar mit Python AutoCAD-Programmierung betreiben: http://through-the-interface.typepad.com/through_the_interface/2009/ 03/using-ironpython-with-autocad.html, http://through-the-interface.typepad.com/through_ the_interface/2009/03/jigging-an-autocad-solid-using-ironpython-and-net.html Es gibt sogar Python direkt in AutoCAD: http://pyacad.sourceforge.net/pyacad.html. Wer in Python einsteigen will, der sollte mit der Version 2.7.1 anfangen, denn viele Libraries sind noch nicht auf die neuen 3.x-Versionen portiert: http://www.python.org/. Python aber lebt v.a. von seinen außergeöhnlich umfangreichen Libraries für so ziemlich alle und sogar die exotischsten Anwendungsgebiete. Eine inoffizielle (und sicher nicht vollständige) Liste der verfügbaren Libraries gibt's z.B. hier: http://www.lfd.uci.edu/~gohlke/pythonlibs/. Übrigens läuft das alles, auch die Frameworks für GUI-Programmierung, sowohl unter Windows als auch Mac und alle Unix-Varianten. Für den ganz schnellen Einstieg empfehle ich erst mal nur Python 2.7.1 und VPython (http://vpython.org/) zu installieren. Auf Youtube gibt's sowohl Einsteigertutorials, als auch nette Filme von Simulationen, die man mit wenigen Zeilen Code in VPython zusammenbasteln kann: http://www.youtube.com/results?search_query=vpython [Diese Nachricht wurde von archtools am 31. Mai. 2011 editiert.]
[Diese Nachricht wurde von archtools am 31. Mai. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|