| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | NVIDIA GTC Paris und ISC High Performance-Konferenz 2025, eine Pressemitteilung
|
Autor
|
Thema: Flächennachweis (2057 mal gelesen)
|
startrek Moderator Architekt
   
 Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 01. Feb. 2004 19:26 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen, möglicherweise schreib' ich jetzt auch bissel Stuss, skusi, ich komm' aber nicht auf den Trichter , folgendes: Ich versuche mich an einer Flächenberechnung und dachte halt dazu gleich die ADT-Object Lib's zu nehmen. Aber da tappse ich brutalst nebulös rum, auch F1 betreffend. Alles was ich da fabriziert habe geht logischerweise nur bei rechteckigen Räumen, also Länge x Breite. Sub test() Dim areas As AecSpace Dim sset As AcadSelectionSet Set sset = ThisDrawing.SelectionSets.Add("ss_1") sset.SelectOnScreen Open "areas_1.txt" For Output As #1 For Each areas In sset Print #1, areas.Description & ";" & areas.Length & ";" & areas.Width Next Close #1 sset.Delete End Sub Da dies nun bissel wenig ist, ich aber mit der adt-Variante nimmer weiter komme, dachte ich nun an eine konventionelle Lösung via Polylinien. Ich bräuchte aber eben den rechnerischen Nachweis, etwa nach so einem Schema oder ähnlich: Raum1;Länge;Breite ; ;Länge;Breite ; ;Länge;Breite;/2 Raum2;Länge;Breite Raum3;Länge;Breite ; ;Länge;Breite;/2 ; ;Länge;Breite;/2 Wobei die m² Ergebnisse sekundär sind, da ich's eh in xls reinnehmen will, mir gehts nur um die Basisdaten, die den Raum beschreiben. Sooo, nun meine 'Querbeet'-Fragen: - wie geh' ichs an? - wie bekomm' ich die n-Points einer Polylinie in Form von: point1 coord(0) & coord(1) point2 coord(0) & coord(1) ... usw, halt point(n) - über Polylines überhaupt machbar oder 'Wahnsinn'? - ADT & VBA, hat da hier schonmal wer damit gearbeitet & hätte ggf nen Tip? lg Nancy -- Shit makes the flowers grow and that's beautiful  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
harryk Mitglied Projektleiter
 
 Beiträge: 124 Registriert: 19.08.2003
|
erstellt am: 02. Feb. 2004 08:46 <-- editieren / zitieren --> Unities abgeben:          Nur für startrek
hi, die Koordinaten einer Polylinie bekommst Du schonmal so: Sub ReadPloyCoord() Dim objAcad As AcadObject Dim varCoord As Variant Dim BasePnt Dim sPointX, sPointY As Double ThisDrawing.Utility.GetEntity objAcad, BasePnt, "Select a Polyline" varCoord = objAcad.Coordinates'Koordinaten holen sPointX = varCoord(0): sPointY = varCoord(1)' 1. Punkt festhalten für Prüfung ob geschlossen For i = LBound(varCoord) To UBound(varCoord) Step 2' in zweier Schritten durchlaufen Debug.Print varCoord(i) & " / " & varCoord(i + 1) Next i = i - 2'zurück setzten auf letzten Punkt If varCoord(i) = sPointX And varCoord(i + 1) = sPointY Then 'geschlossen? Debug.Print "closed" Else Debug.Print "open" End If End Sub Mir fehlt allerdings jetzt jeglicher Ansatz wie Du mit den Koordinaten die Fläche ausrechnen willst, wenn ich davon ausgehe das Du nicht nur Rechteckige Shapes hast. Gruss, Harry Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
   
 Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 02. Feb. 2004 10:01 <-- editieren / zitieren --> Unities abgeben:         
Morgen Harry, Danke erstmal, das geht ja schonmal wunderbar. Ich geb' Dir nun natürlich recht betreffs der weiteren Verwertung der coords, noch etwas confused ... Meine Gedanken waren etwa, rein theoretisch, müsste man für jede pline einen Ursprung (0,0) setzen [da gab's ja hier schon was] und dann halt jede Koordinate mit der vorhergehenden vergleichen und Pythagoras und ... und ... Keine Ahnung, wahrscheinlich 'Kult' ohne Ende. CU Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
harryk Mitglied Projektleiter
 
 Beiträge: 124 Registriert: 19.08.2003
|
erstellt am: 02. Feb. 2004 10:35 <-- editieren / zitieren --> Unities abgeben:          Nur für startrek
|
startrek Moderator Architekt
   
 Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 02. Feb. 2004 10:49 <-- editieren / zitieren --> Unities abgeben:         
|
harryk Mitglied Projektleiter
 
 Beiträge: 124 Registriert: 19.08.2003
|
erstellt am: 02. Feb. 2004 11:21 <-- editieren / zitieren --> Unities abgeben:          Nur für startrek
getz nich lachen.. Fläche gipps schon, gut., nen Dreieck ists wenn die Anzahl der Koordinaten Paare 4 nicht übersteigt (oder 8 Werte), eine Segmentlänge können wir auch ermitteln z.B. aus den ersten beiden Koordinaten Paaren. Wenns denn nur für den Nachweis ist und A=g*h/2, dann würd ich erstmal mit h=A*2/g den fehlenden Wert ermitteln und mit Drucken. Quick'n Dirty aber führt zum Ziel. Gruss, Harry Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
   
 Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 02. Feb. 2004 12:07 <-- editieren / zitieren --> Unities abgeben:         
neeeeneee ich lach nicht  , thx war zwischenzeitlich hierbei, das harkt aber noch bissel was deltaY angeht, kleiner Knoten im Kopf: For i = LBound(varCoord) To UBound(varCoord) Step 4 Debug.Print varCoord(i) & " / " & varCoord(i + 1) & " / " & varCoord(i + 2) & " / " & varCoord(i + 3) Debug.Print "deltaX " & varCoord(i + 2) - varCoord(i) & " deltaY " & varCoord(i + 3) - varCoord(i + 1) Next lg Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
harryk Mitglied Projektleiter
 
 Beiträge: 124 Registriert: 19.08.2003
|
erstellt am: 02. Feb. 2004 13:27 <-- editieren / zitieren --> Unities abgeben:          Nur für startrek
|
startrek Moderator Architekt
   
 Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 02. Feb. 2004 13:43 <-- editieren / zitieren --> Unities abgeben:         
okay, ich sag' mal 'Vieleck' oder eben im Grundriss 'Räume', die haben ja nun nicht nur immer 4 Ecken, sondern eben manchmal mehr oder 45° abgewinkelt oder so. Nochwas, der 'Knoten' war das Step 4, ich habe da wieder Step 2 draus gemacht und den Rest gelassen, voila da gings  (Naja bis auf den Laufzeitfehler beim letzten Punkt) lg Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
harryk Mitglied Projektleiter
 
 Beiträge: 124 Registriert: 19.08.2003
|
erstellt am: 02. Feb. 2004 14:03 <-- editieren / zitieren --> Unities abgeben:          Nur für startrek
|
startrek Moderator Architekt
   
 Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 02. Feb. 2004 14:36 <-- editieren / zitieren --> Unities abgeben:         
Mensch Harry, Danke für deinen Support & thx für den Link  Ich bin mir jetzt nicht ganz sicher, denke aber auch, alles weitere in xls, dh. der Code liefer mir jetzt zB sowas: deltaX 42,6016337897688 deltaY 0 deltaX 0 deltaY 47,5005143514831 deltaX -16,2585945120821 deltaY 0 deltaX 0 deltaY -20,3573632760519 deltaX -10,2902497212156 deltaY -12,132166109952 beep deltaX -16,0527895564711 deltaY 0 deltaX 0 deltaY -15,0109849654792 Soo jetzt halt das ganze in eine *.txt oder gleich nach excel schreiben, oki, und dann mal weiterschaun ... (Den Laufzeitfehler beim letzten Punkt hab' ich mal fahrlässig/grob mit on error resume next ignoriert) BTW , ich wollte Dich aber nicht unbedingt aus der Ruhe bringen  CU Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
harryk Mitglied Projektleiter
 
 Beiträge: 124 Registriert: 19.08.2003
|
erstellt am: 03. Feb. 2004 04:40 <-- editieren / zitieren --> Unities abgeben:          Nur für startrek
so, dat funzt. Hat aber eher was mit Sportlichkeit zu tun. Soll heissen das ich mir die diese Code Snippets in die Datenbank schreibe und bei Bedarf dann in der Mittagspause für eine schnelle Lösung zusammen kloppe. Von selbst fallen mir solche Probleme ja nicht ein... Danke für den Ansporn! Harry Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |