Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  CivilTINVolumeSurface: Kaufe Äpfel, kriege Birnen

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
  
PNY WIRD VON NVIDIA ZUM HÄNDLER DES JAHRES GEWÄHLT, eine Pressemitteilung
Autor Thema:  CivilTINVolumeSurface: Kaufe Äpfel, kriege Birnen (1621 mal gelesen)
fred_tomke
Mitglied
Applikationsingenieur


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

Beiträge: 156
Registriert: 14.06.2004

erstellt am: 19. Okt. 2005 08:02    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


vba.jpg

 
Hallo,

ich krieg hier Mega-schlechte Laune:

Man erzeuge zwei TINSurfaces.
Bilde aus den beiden ein TINVolumeSurface.

Im VBA-Makro1 wird iterativ die Surface-Collection nach TINVolumeSurface geprüft. Für alle TINVolumeSurfaces werden aus dem Statistics-Objekt die Volumina ausgegeben.
Ist das Surface vom Type aecckTINVolumeSurface, ist das Object vom Type AeccTinVolumeSurface und das Statistic-Object vom Type AeccTinVolumeSurfaceStatistics. So solls sein.

Im VBA-Makro2 wird mittels ThisDrawing.Utility.GetEntity ein TinVolumeSurface gewählt. Geht der geneigte Entwickler davon aus, gleich dem GetEntity eine Variable vom Typ AeccTinVolumeSurface zu übergeben, krachts schon mal hier. Der Laie ist beeindruckt, den Profi wunderts. Gehen wir also eine Etage höher und übergeben GetEntity eine Variable vom Typ AeccSurface. Nun klappts.
Das gewählte Element wird nach TINVolumeSurface geprüft.
Im positiven Fall habe ich nunmehr eine Variable vom Typ AeccTinVolumeSurface bereitgehalten und weise - wie im Autodesk-Beispiel - der Variable oTinVolSurf oSurf aus GetEntity zu.
set oTinVolSurf = oSurf
Peng!
Na gut, das geht dann auch nicht. Dann lassen wir uns von der Surfaces-Collection das entsprechende Objekt ausgeben und weisen es der Variable oTinVolSurf (vom Typ AeccTinVolumeSurface, weil es ist doch ein TinVolumeSurface) zu.
set oTinVolSurf = oSurfaces(oSurf.Name)
Peng!
Spätestens an dieser Stelle glaubt der Laie, er habe sich im AutoCAD verklickt.
Prüft man jedoch was in der Surfaces-Collection alles drin ist, wird man schnell fündig:
Das TinVolumeSurface, das der User über den Arbeitsbereich erzeugt hat, ist vom Type aecckTINVolumeSurface, das Object ist aber vom Type AeccTinSurface und das Statistic-Object vom Type AeccTinSurfaceStatistics (siehe Anlage). So bekomme ich natürlich keine Volumina.
Aber wieso? Hatte ich nicht das gleiche Problem unter VLisp? Hatte ich nicht auf Anraten von Autodesk mit VBA begonnen?
Zitat: "...Yes , you can read the volume data in Map 3D 2006 / Civil 3D 2006 using other languages than VisualLisp. In my earlier communication, I had sent you an example in VBA which demonstrates creation of a volume surface and statistics calculation...."

Und nun?
VG, Fred

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 19. Okt. 2005 08:59    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 Nur für fred_tomke 10 Unities + Antwort hilfreich

ich hab zwar leider kein MAP um es zu probieren

aber definiere die Variable oTinVolSurf als
Variant, Object oder IAeccTinSurface


------------------

Ing. Anton Fuchs
WWW.FFZELL.AT.TC

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

fred_tomke
Mitglied
Applikationsingenieur


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

Beiträge: 156
Registriert: 14.06.2004

erstellt am: 19. Okt. 2005 09:21    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

Hm, wenn ich das aber tue, dann ist es ja im Prinzip falsch, den das gewählte Objekt ist ja ein AeccTinVolumeSurface und kein AeccTinSurface.

Da ich nicht weiß, ob Du schon mit TinSurfaces konfrontiert warst, eine kurze Erklärung anbei (wenn Du das schon alles kennst, überlies es).

Im Map 3D/Civil 3D gibt es zum einen AeccTinSurfaces, die ganz normal aus Punkten, Linien usw. mit Höheninformationen erzeugt werden. Die Volumendifferenz zweiter AeccTinSurfaces kann mit einem AeccTin<b>Volume</b>Surface ermittelt werden. Das ist ein eigenständiges Objekt als Ergebnis der Prismenberechnung.
AeccTinSurface und AeccTin<b>Volume</b>Surface gehören zur Klasse AeccSurface. Deklariere ich die Variable oTinVolSurf als AeccSurface, kriege ich nur allgemeine Angaben, wie Name, Type usw. Eine typabhängige Eigenschaft ist das Statistics-Object, das es nicht vom AeccSurface gibt. Das Statistic-Object eines AeccTinSurface ist vom Typ AeccTinSurfaceStatistics und vom AeccTin<b>Volume</b>Surface ist es AeccTin<b>Volume</b>SurfaceStatistics. Nur unter AeccTin<b>Volume</b>SurfaceStatistics kriege ich die Eigenschaften CutVolume, FillVolume und NetVolume, nicht jedoch vom AeccTinSurfaceStatistics. In der Anlage VBA.JPG siehst Du, dass nach dem GetEntity das als AeccTinVolumeSurface erzeugte DGM von Map als AeccTinSurface mit dem Typ aecckTinVolumeSurface erkannt wird und ebenso falsch das AeccTinSurfaceStatistics-Object ausgibt.

Konntest Du folgen?
Du hast so schön IAeccTinSurface geschrieben - worin besteht der Unterschied zu AeccTinSurface?
VG, Fred

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

fred_tomke
Mitglied
Applikationsingenieur


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

Beiträge: 156
Registriert: 14.06.2004

Map 2015 x64
Win7 x64
12 GB RAM
ADN
OpenDCL

erstellt am: 19. Okt. 2005 09:26    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

P.S. Wie schreibst Du was fett?

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

Stelli1
Moderator
Verm.-Ing.


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

Beiträge: 1526
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 19. Okt. 2005 09:31    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 Nur für fred_tomke 10 Unities + Antwort hilfreich

Hallo Fred,

was willst du eigentlich machen ??

Ein DGM nachprogrammieren ? Volumenberechnung ? zwei DGM verschneiden ? Willst du es anwenden oder verkaufen ?

Wofür braucht man eine Multifunktion zur Eigenschaftsabfrage ?
Dafür gibts ja die Objekte mit den Eigenschaften.

Seit 2 Jahren habe ich keine Aufgaben mehr für ein DGM.
Früher habe ich das DGM Atlas verwendet. Kann bis 4 Mio Punkte.
Kostet auch nicht viel. Das hast du alles drin.
Für die Massenberechnung müsstest du auch noch eine REB Datenart erzeugen.

Stelli

------------------
Warum lisp'eln wenn's auch anders geht.

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

Stelli1
Moderator
Verm.-Ing.


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

Beiträge: 1526
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 19. Okt. 2005 09:37    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 Nur für fred_tomke 10 Unities + Antwort hilfreich

Hallo Fred,
Zitat:
Original erstellt von fred_tomke:
P.S. Wie schreibst Du was fett?

siehe auch: http://ww3.cad.de/foren/ubb/Forum259/HTML/000750.shtml#000006

Du musst nicht die HTML tags verwenden sondern [ und ]

Stelli

------------------
Warum lisp'eln wenn's auch anders geht.

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

fred_tomke
Mitglied
Applikationsingenieur


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

Beiträge: 156
Registriert: 14.06.2004

erstellt am: 19. Okt. 2005 09: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

Nein, ich will kein DGM nachprogrammieren. Ich will das von Autodesk mitgelieferte DGM nutzen: Nachdem man nun DGM's im Map und Civil erstellen kann, gelingt es mir endlich, Kundenanfragen zu beantworten, die bspw. mit unserer Pflanzenverwendung einem TinSurface (z.B. Wall-Oberfläche) eine Ansaat zuweisen wollen.

Das Pendant dazu wäre für das LV-Massenmanagement das TinVolumeSurface für die Mengenberechnung: Ich weise einer Position im AutoCAD ein Objekt zu und habe das Volumen für die Kostenschätzung.

VG, Fred

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

fred_tomke
Mitglied
Applikationsingenieur


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

Beiträge: 156
Registriert: 14.06.2004

Map 2015 x64
Win7 x64
12 GB RAM
ADN
OpenDCL

erstellt am: 19. Okt. 2005 09:58    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

... dazu muss man natürlich das Volumen aus dem AeccTinVolumeSurface auslesen können...

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

fred_tomke
Mitglied
Applikationsingenieur


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

Beiträge: 156
Registriert: 14.06.2004

erstellt am: 20. Okt. 2005 07:50    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

... es ist sooooo traurig ...

ADN-Antwort

Hi Fred,

Thanks for the update. I had noticed the screen selection behavior of a TinVolume surface earlier and I can reproduce the issue. I have updated the change request 690136 (logged earlier) with all necessary details. Meanwhile, as a workaround, I request you to use the code snippet earlier sent to you which loops through the surface collections and if any TinVolume surface exists it returns the statistics.

Macht echt Sinn das Ganze.
VG, Fred

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 20. Okt. 2005 13:24    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 Nur für fred_tomke 10 Unities + Antwort hilfreich

dann schau halt mal nach , was das denn für ein Typ ist

Code:

Dim a  ' ohne einer Typzuweisung
Set a = osurfs(osurf.name)
Debug.Print TypeName(a)


Zitat:

set oTinVolSurf = oSurf
Peng!

ausserdem was heisst PENG ! Wie wärs mal mit einer Fehlermeldung ?
Ist es überhaupt ein Laufzeitfehler 13, Typen unverträglich ?
------------------

Ing. Anton Fuchs
WWW.FFZELL.AT.TC

[Diese Nachricht wurde von fuchsi am 20. Okt. 2005 editiert.]

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

fred_tomke
Mitglied
Applikationsingenieur


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

Beiträge: 156
Registriert: 14.06.2004

erstellt am: 20. Okt. 2005 16:52    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

Hallo Anton,

ja, also, das ist so:
- oTinVolSurf ist vom Typ AeccTinVolumeSurface, weil ich ein AeccTinVolumeSurface haben will. Nur wenn die Variable vom Typ AeccTinVolumeSurface ist, kann ich auch das Statistics-Object abfragen.
- oSurf ist vom Typ AeccSurface

Da oSurf.Type = aecckTinVolumeSurface ergibt, kann ich
set oTinVolSurf = oSurf machen, weil oTinVolSurf vom Typ AeccTinVolumeSurface ist und oSurf ein Objekt vom Typ AeccTinVolumeSurface tragen sollte, das klappt nur deshalb, weil AeccTinVolumeSurface eine Ableitung von AeccSurface ist.

AeccTinVolumeSurface ist abgeleitet von AeccSurface, genauso wie AeccTinSurface, AeccGridSurface und AeccGridVolumeSurface.

Hast Du Dir das mitgesandte Bild vba.jpg angesehen? In dem Bild siehst Du, dass bereits das Item in der Überwachung in der Collection falsch ist - noch bevor ich es in eine Variable mit einem definierten Objekttyp gebracht habe.

Das heißt: Ich habe ein AeccTinVolumeSurface gewählt, Autodesk gibt es aber als AeccTinSurface zurück, schreibt jedoch den Typ aecckTinVolumeSurface ran. Weil ich diesen Type bekommen, gehe ich davon aus, dass es ein AeccTinVolumeSurface ist und gehe den nächsten Schritt. Und dann kommt PENG!

Die Fehlermeldung heißt: Laufzeitfehler 13, Typen unverträglich.

Autodesk hat mitgeteilt, dass sie den Fehler reproduzieren können und mir raten, eben kein DGM anzuklicken. Was Sinn macht.

Ich hoffe, ich konnte etwas Licht ins Dunkel bringen.
Letztlich kann in diesem Fall keiner helfen außer ein Bugfixing von Autodesk selbst.

VG, Fred

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

fred_tomke
Mitglied
Applikationsingenieur


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

Beiträge: 156
Registriert: 14.06.2004

Map 2015 x64
Win7 x64
12 GB RAM
ADN
OpenDCL

erstellt am: 24. Okt. 2005 10:35    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

letzte Antwort zu diesem Problem vom ADN...

Hi Fred,

Thanks for the information regarding number of Civil 3D installations and expectations in earth work calculations feature. I have updated the change request with the details you have sent to us. I have also verified the issue using C# (as requested by you), however, no success in there too when we try to make a screen selection of a volume surface. I think it is due to the reason that, we are using the same COM API via Interop in .NET. I have also discussed this issue with my colleagues and they confirmed the same. Sorry for the bad news. AT this point, I can only request you to use the other procedure of looping through the surface collections and for a TinVolume surface get the statistics. I do agree with you that screen selection of a surface to get the volume statistics would be a better option when there are number of surfaces in a dwg file. I am trying to follow-up the status of the change Request logged on this issue and I will update you when I hear from our QA & Engineering team on the same.

Verharren wir der Dinge, die da kommen mögen...
VG, Fred

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

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)2024 CAD.de | Impressum | Datenschutz