Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Füllen eines Kreises aus Excel

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:  Füllen eines Kreises aus Excel (2627 mal gelesen)
Sagu
Mitglied
Dipl - Ing


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

Beiträge: 31
Registriert: 11.03.2007

erstellt am: 14. Mrz. 2007 10:16    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 Forum,
zur Zeit sitze ich an einem Makro, welches ich in Excel 2003 ausführe. Es sollen die Daten für Kreise an Autocad 2004 übergeben gezeichnet und mit Solid gefüllt werden. Das Öffnen der Zeichnung und das Erstellen der Kreise klappt schon super, aber das Füllen der Kreise schafft mich.
Nun bin ich in der VBA Sprache Neuling und probiere mehr aus als dass ich gezielt vorgehe. Wollte mir entsprechende Literatur besorgen. Das gestaltet sich etwas schwierig, da in den großen Buchhandlungen nur noch ein Buch  über VBA in AutoCad erhältlich ist (dieses hab ich mir schon in ner Bibo besorgt).
Mein Makro sieht wie folgt aus:

Sub x()
    Dim I As Integer
    Dim kx As Double
    Dim ky As Double
    Dim r As Double
    Dim AcadApp As Object
    Dim centerPoint(0 To 2) As Double
    Dim radius As Double
       
    ‘Dim hatchObj As AcadHatch
    ‘Dim outerLoop(0 To 0) As AcadEntity

    ‘Dim patternName As String
    ‘Dim PatternType As Long
    ‘Dim bAssociativity As Boolean
   
    ‘patternName = "Solid"
    ‘PatternType = 0
    ‘bAssociativity = True

    Set AcadApp = CreateObject("autocad.application")
    AcadApp.Visible = -1
       
    For I = 8 To 508
    kx = Range("AG" & I)    'X-Koordinate vom Kreismittelpunkt
    ky = Range("AH" & I)    'Y-Koordinate vom Kreismittelpunkt
    r = Range("AI" & I)        'Radius vom Kreis
    centerPoint(0) = kx: centerPoint(1) = ky: centerPoint(2) = 0#
    radius = r
    AcadApp.ActiveDocument.ModelSpace.Addcircle centerPoint, radius
    ‘Set outerLoop(0) = AcadApp.ActiveDokument.ModelSpace.Addcircle(centerPoint, radius)
    ‘Set hatchObj(0) = AcadApp.ActiveDocument.ModelSpace.AddHatch(patternName, PatternType, bAssociativity)
    ‘hatchObj.Evaluate
    ‘ThisDrawing.Regen True
    Next I
    AcadApp.ZoomExtents
   
End Sub

Die in Kommentarzeichen stehenden Zeilen waren mein kläglicher Versuch die Kreisflächen zu füllen. Das funktioniert nicht so richtig. Wie kann ich die Schraffur dem Kreis anhängen?

Ich möchte danach die Fläche rasterweise abtasten und überprüfen ob jeder Rasterpunkt auch mit Solid gefüllt ist. Geht das mit GetXData der Punkte und mit welchem Zahlencode? Und wie spreche ich jeden der Rasterpunkte aus einer Schleife an?

Vielen Dank für die Hilfe

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

startrek
Moderator
Architekt


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

Beiträge: 1361
Registriert: 13.02.2003

.

erstellt am: 14. Mrz. 2007 10:32    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 Sagu 10 Unities + Antwort hilfreich

Hi Sagu,

ganz kurz nur, hilft Dir ggf. das etwas weiter: http://ww3.cad.de/foren/ubb/Forum259/HTML/000498.shtml#000005

Gruss Nancy

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: 1521
Registriert: 17.08.2005

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

erstellt am: 14. Mrz. 2007 11: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 Sagu 10 Unities + Antwort hilfreich

Hallo,

hast du doch den Weg ins VBA Forum gefunden  

Probier es doch mal so:

Code:
Sub donut()

    Dim Kreis(0) As AcadCircle
    Dim InnenKreis(0) As AcadCircle
    Dim Hatch As AcadHatch
    Dim InsPkt(0 To 2) As Double
    Dim Radius As Double
   
    InsPkt(0) = 5: InsPkt(1) = 5: InsPkt(2) = 0: Radius = 5
    Set Kreis(0) = ThisDrawing.ModelSpace.AddCircle(InsPkt, Radius)
    Kreis(0).Update
   
    InsPkt(0) = 5: InsPkt(1) = 5: InsPkt(2) = 0: Radius = 3
    Set InnenKreis(0) = ThisDrawing.ModelSpace.AddCircle(InsPkt, Radius)
    InnenKreis(0).Update
   
    Set Hatch = ThisDrawing.ModelSpace.AddHatch(0, "Solid", True)
    Hatch.AppendOuterLoop Kreis
    Hatch.AppendInnerLoop InnenKreis
    Hatch.Evaluate
    Hatch.color = acMagenta
    Hatch.Update
End Sub



Bei dir fehlt SET HATCH. Sonst kannst du die Eigenschaften(color) und Methoden(Evaluate) für dieses Objekt nicht anwenden.
Ausserdem ist die Reihenfolge von Patternname und -type vertauscht.

Stelli

------------------
Warum lisp'eln wenn's auch anders geht. 
www.ib-stelberg.de

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

Sagu
Mitglied
Dipl - Ing


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

Beiträge: 31
Registriert: 11.03.2007

erstellt am: 14. Mrz. 2007 11:53    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

Das hat super funktioniert. Ich habe wohl nicht richtig gesucht.

Wieder mal Vielen Dank.

Wie sieht es mit meiner zweiten Überlegung, zu Punkt x,y zu gehen und dessen Eigenschaft Solid zu ermitteln aus? ist das über getXData möglich? Wie spreche ich den Punkt x,y an?

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: 1521
Registriert: 17.08.2005

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

erstellt am: 14. Mrz. 2007 12: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 Nur für Sagu 10 Unities + Antwort hilfreich

Hallo,

das kannt du mit SelectAtPoint machen.
Dazu brauchst du ein Selectionset. Am Besten gleich noch für den Punkt einen Filter für Hatch mitgeben. Dazu gibt es einige Beiträge

Stelli

------------------
Warum lisp'eln wenn's auch anders geht.
www.ib-stelberg.de

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