Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Civil 3D - Höhenpläne / Achsen

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
Autor Thema:  Civil 3D - Höhenpläne / Achsen (2013 mal gelesen)
Soldnerkugel
Mitglied



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

Beiträge: 131
Registriert: 29.01.2010

Win 7, AutoCAD Civil 3D 2015, SketchUp, CarlsonSurvCE

erstellt am: 02. Jun. 2011 21:19    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 zusammen,

ich habe mehrere Höhenpläne (erstellt aus Achsen). Für weitere Arbeiten möchte ich mir ein Makro programmieren, bei dem ich nach Aufruf des Makros einen dieser Höhenpläne per Mausclick auswähle und dann bestimmte Informationen dieses Höhenplans erhalte. Nach der Auswahl sollen mir z.B. die Ausdehnung des Höhenplanes in der Zeichnung (minimale und maximale x- u. y-Koordinate - quasi wie bei einer BoundingBox, die Achse mit der der Höhenplan erstellt wurde und die minimale Höhe, die in der grafischen Darstellung als Achsbeschriftung verwendet wird, ausgegeben werden.
Ich habe mir grad den "civil_api_developers_guide" durchgelesen, da steht ja schon einiges drin, allerdings nur zu Erstellung von Höhenplänen mit VBA, bei mir ist die Aufgabenstellung ja genau andersrum. Den Höhenplan habe ich ja schon, ich möchte ja o.a. Informationen des Höhenplanes per Mauscklick rausfinden.
1. geht das überhaupt?
2. wenn ja: wie?

...ich freue mich auf eure Anregungen und Tips 

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

http://www.stupidedia.org/stupi/Rechter_Winkel

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


Ex-Mitglied

erstellt am: 05. Jun. 2011 21:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> Nach der Auswahl sollen mir z.B. die Ausdehnung des Höhenplanes in der Zeichnung
>> (minimale und maximale x- u. y-Koordinate - quasi wie bei einer BoundingBox

Und geht GetBoundingBox nicht? Ich möcht jetzt ohne Codevorlage nicht zu schreiben beginnen, wenn Du es schon probiert hast. Wenn Du es noch nicht probiert hast, dann probiers bitte und berichte die Erfahrungen dazu. 

BTW: Dir ist schon klar, dass sich die BoundingBox ändert, wenn Du den Maßstab (im Ansichtsfenster eines Layouts) änderst? 

Aus dem Satz werd ich auch nicht ganz schlau:
>> die minimale Höhe, die in der grafischen Darstellung als Achsbeschriftung verwendet wird

Mir ist dabei nicht klar, was die minimale Höhe der Achsbeschriftung in einem Höhenplan ist, denn eine Achse hat keine Höhe, maximal der von der Achse abhängige Längsschnitt.
...und davon kann es wiederum mehrere in einem Höhenplan geben.

Sorry, Fragen über Fragen.

- alfred -

------------------
www.hollaus.at

Soldnerkugel
Mitglied



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

Beiträge: 131
Registriert: 29.01.2010

Win 7, AutoCAD Civil 3D 2015, SketchUp, CarlsonSurvCE

erstellt am: 06. Jun. 2011 08:47    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 Alfred,

das Problem ist nicht die BoundingBox, was ich benötigen würde, wären Informationen wie ich auf Eigenschaften eines Objektes der Art AeccProfile zugreifen kann, bzw. auf welche Eigenschaften man zugreifen kann.
gibt's da irgendwo eine Dokumentation? dieser civil_api_developersguide gibt da nämlich nichts her (zumindest mir nicht).
Ich bräuchte z.B. Informationen wie
AeccProfile.Einfügepunkt
AeccProfile.Basishöhe
AeccProfile.zugrundeliegende_Achse

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

http://www.stupidedia.org/stupi/Rechter_Winkel

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


Ex-Mitglied

erstellt am: 06. Jun. 2011 11:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

hier ein Beispiel, wie Du an die ProfileView-Info's herankommst.

Code:
Public Sub getProfileInfo()
  Const AeccProgID As String = "AeccXUILand.AeccApplication.7.0"  'Versionsnummer anpassen!
  Dim tAcadApp As AcadApplication
  Dim tAeccApp As AeccApplication
  Dim tAeccDoc As AeccDocument
  Dim tAeccDocDB As AeccDatabase
 
  Set tAcadApp = ThisDrawing.Application
  Set tAeccApp = tAcadApp.GetInterfaceObject(AeccProgID)
  Set tAeccDoc = tAeccApp.ActiveDocument
  Set tAeccDocDB = tAeccDoc.Database
 
  Dim tSite As AeccSite
  Dim tAlignment As AeccAlignment
  Dim tProfileView As AeccProfileView
  For Each tSite In tAeccDocDB.Sites
      For Each tAlignment In tSite.Alignments
        Call ThisDrawing.Utility.Prompt(vbCrLf & "Achse: " & tAlignment.Name & vbCrLf)
        For Each tProfileView In tAlignment.ProfileViews
            Call ThisDrawing.Utility.Prompt("  Profilname: " & tProfileView.DisplayName & vbCrLf)
            Call ThisDrawing.Utility.Prompt("      Basishöhe: " & tProfileView.ElevationMin & vbCrLf)
            Dim tExtMin As Variant
            Dim tExtMax As Variant
            Call tProfileView.GetBoundingBox(tExtMin, tExtMax)
            Call ThisDrawing.Utility.Prompt("      Einfügepunkt: " & CStr(tExtMin(0)) & "," & CStr(tExtMin(1)) & vbCrLf)
        Next
      Next
  Next
End Sub

Nicht vergessen:
- die Verweise in Deinem VBA-Projekt zu setzen
- die Versionsnummer von AeccApp (bei GetInterfaceObject) auf Deine Version anzupassen.

HTH, - alfred -

------------------
www.hollaus.at

Soldnerkugel
Mitglied



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

Beiträge: 131
Registriert: 29.01.2010

Win 7, AutoCAD Civil 3D 2015, SketchUp, CarlsonSurvCE

erstellt am: 06. Jun. 2011 11:49    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

vielen Dank! probier' ich demnächst gleich mal aus.

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

http://www.stupidedia.org/stupi/Rechter_Winkel

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

Soldnerkugel
Mitglied



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

Beiträge: 131
Registriert: 29.01.2010

Win 7, AutoCAD Civil 3D 2015, SketchUp, CarlsonSurvCE

erstellt am: 04. Aug. 2011 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

vielen Dank nochmal für die Antwort, war zwar nicht exakt das, was ich gebraucht hätte, war aber dann doch so gut, dass ich mir das selber erschliessen konnte.
Einmal auf den Geschmack gekommen, kann ich's nicht lassen, gleich was anderes programmieren zu wollen, aber leider sind da mal wieder meine Kenntnisse zu gering, vllt. kann mir ja wieder jemand helfen.

Ich möchte nun also eine AutoCAD-linie auswählen und diese in eine Achse umwandeln und zeichnen lassen, das möchte ich mit folgendem Code machen:
----------------------------------------------------------------------------------------------------
    Dim oAlignmentStyle As AeccAlignmentStyle
    Dim oAlignmentLabelStyleSet As AeccAlignmentLabelStyleSet
    Dim oAlignment As AeccAlignment
    Dim strReihenname As String
    Dim oAlignments As AeccAlignments
    Dim oPoly As AcadLWPolyline
    Dim dblPoints(0 To 3) As Double
    Dim Anz As Double

    'Anfangs- und Endpunkt der ausgewählten Linie
    dblPoints(0) = dblLStartPkt(0): dblPoints(1) = dblLStartPkt(1)
    dblPoints(2) = dblLEndPkt(0): dblPoints(3) = dblLEndPkt(1)
    Set oAlignments = tAeccDoc.AlignmentsSiteless
   
    i = 0: j = 0
    ' Ermittlung der Position des LabelStyleSets innerhalb tAeccDoc um die gewünschte Darstellung zu ermöglichen
    Do Until tAeccDoc.AlignmentLabelStyleSets.Item(i).Name = "Profilschnitt"
        i = i + 1
    Loop
    ' Ermittlung der Position des AlignmentStyles innerhalb tAeccDoc um die gewünschte Darstellung zu ermöglichen
    Do Until tAeccDoc.AlignmentStyles.Item(j).Name = "Standard"
        j = j + 1
    Loop

    'Zuweisung der xy-Werte an LWPolyline
    Set oPoly = tAeccDoc.ModelSpace.AddLightWeightPolyline(dblPoints)

    ' Create an alignment from the polyline object. Draw to
    ' layer 0, erase the polyline when we are done, and
    ' insert curves between line segments.
    Set oAlignment = oAlignments.AddFromPolyline( _
    "Sample Alignment from Polyline", _
    "0", _
    oPoly.ObjectID, _
    tAeccDoc.AlignmentStyles.Item(j).Name, _
    tAeccDoc.AlignmentLabelStyleSets.Item(i).Name, _
    True, _
    True)
--------------------------------------------------------------------------------------------

bis zum letzten Abschnitt ('Create an alignment from...) tritt kein Fehler auf, auch den letzten Abschnitt durchläuft man ohne Fehlermeldung.
Nur: es passiert nichts.
Das "oAlignment" hat nach dem Durchlaufen des Codes den Wert "Nothing". Am Namen des Alignments und dem Layer kann's ja auch nicht liegen.
tAeccDoc.AlignmentStyles.Item(j).Name gibt es und tAeccDoc.AlignmentLabelStyleSets.Item(i).Name ebenso, beide Variablen haben auch den gewünschten Wert.

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

http://www.stupidedia.org/stupi/Rechter_Winkel

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