Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Excel Routinen von ACAD aus ausführen

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:  Excel Routinen von ACAD aus ausführen (1979 mal gelesen)
domda0
Mitglied



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

Beiträge: 149
Registriert: 21.04.2004

erstellt am: 13. Feb. 2011 18: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

Hallo,

ich hoffe Ihr könnt mir weiterhelfen.
Ich habe einige Schritte die ich gerne zusammenfassen würde und weiß nicht genau wie.

Chronologisch aufgelistet mach ich folgende Dinge:

1.) attout - Speichern unter C:/test.txt - Auswählen aller Blöcke
2.) vba "CoordEntry" (aus diesem forum) aufrufen

    Die SChließen Funktion hab ich derzeit ausgenommen und müsste sie durch eine speichern funkt ersetzen

Code:
Dim ExcelApp As Object
Dim ExcelWb As Object
Dim i As Integer
Dim ExcelWorksheet As Object

Public Sub CoordEntry()
    Set ExcelApp = CreateObject("Excel.Application")
    'ExcelApp.Visible = True
    Set ExcelWb = ExcelApp.workbooks.Open("c:\test.txt")
    Set ExcelWorksheet = ExcelWb.sheets("test") 'activesheet

    'ExcelApp.Quit
    'Set ExcelApp = Nothing: Set ExcelWb = Nothing: Set ExcelWorksheet = Nothing

End Sub



3.) Im Excel vba "sbHL" aufrufen

Code:
Option Explicit

Sub sbHL()

    Dim liRow As Integer, liCol As Integer, liHP As Integer, liHL As Integer, lstrHL As String
   
        For liCol = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
            If LCase(Cells(1, liCol).Value) = "homepage" Then
                liHP = liCol
            End If
            If LCase(Cells(1, liCol).Value) = "hyperlink" Then
                liHL = liCol
            End If
        Next
       
        For liRow = 2 To Cells(Rows.Count, 1).End(xlUp).Row
            lstrHL = Cells(liRow, liHP).Value & "/"
                For liCol = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
                    If liCol <> liHP And liCol <> liHL Then
                        lstrHL = lstrHL & Cells(1, liCol).Value & "=" & Cells(liRow, liCol).Value & "&"
                    End If
                Next
            lstrHL = Left(lstrHL, Len(lstrHL) - 1)
            ActiveSheet.Hyperlinks.Add Anchor:=Cells(liRow, liHL), Address:=lstrHL, TextToDisplay:=lstrHL
        Next
End Sub


4.) Speichern der Datei und Excel schließen
5.) attin  - Auswählen der Datei C:/test.txt
6.) Aufrufen des Lisp Prog "sethl"

Code:
(defun c:sethl ( / ss hyp ) (vl-load-com)
  ;; © Lee Mac 2010

  (if (ssget '((0 . "INSERT") (66 . 1)))
    (progn
      (vlax-for obj
        (setq ss
          (vla-get-ActiveSelectionSet
            (vla-get-ActiveDocument (vlax-get-acad-object))
          )
        )
        (mapcar
          (function
            (lambda ( x )
              (if (eq "HYPERLINK" (strcase (vla-get-TagString x)))
                (progn
                  (vlax-for h (setq hyp (vla-get-Hyperlinks obj))
                    (vla-delete h)
                  )                   
                  (vla-Add hyp (vla-get-Textstring x))
                )
              )
            )
          )
          (vlax-invoke obj 'GetAttributes)
        )
      )
      (vla-delete ss)
    )
  )

  (princ)
  )


Danke euch schon im voraus für jegliche Hilfe
Dominik

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


Ex-Mitglied

erstellt am: 13. Feb. 2011 19:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

das ist mitunter zeichnungsabhängig, also eine Zeichnung mit den Blöcken ist da auch notwendig, um alles nachvollziehen zu können.

Und das kurz zusammengefasst, korrigiere mich bitte, wenn ich etwas beim Überfliegen Deiner Vorstellung zu sehr 'überflogen habe':
- Du brauchst Excel eigentlich nur, um einen Hyperlink im AutoCAD aus Blockattributen zu machen? Das geht leichter/direkt in VBA.
- Mach mal eine DWG vor der Zuweisung der Hyperlinks und eine, in der Du das manuell machst (am Beispiel von ein paar Blöcken) und lade dieses hier hoch, dann geht's weiter.

- alfred -

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

domda0
Mitglied



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

Beiträge: 149
Registriert: 21.04.2004

erstellt am: 13. Feb. 2011 22:07    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


Ausschnitt.zip

 
Hallo Alfred,

anbei ein gerade zusammengebastelter Ausschnitt
Excel benötige ich einerseits nur für die Vergabe des Hyperlinks (mir ist nichts besseres eingefallen...),
andererseits gefällt mir das fertige txt file so dass ich es als Grundlage für unsere Datenbankinfos nehmen möchte.
(Erspart mir die zusätzlichen Datenextraktion)

Dominik

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


Ex-Mitglied

erstellt am: 14. Feb. 2011 10:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat


BlAtt_to_HyperLink_AN01.zip

 
Hi,

ok, hier mal ein VBA, das alles in AutoCAD macht, dass ATTOUT (bereits mit ausgefüllten Attributen) kannst Du ja immer noch machen.

Anwendung: das DVB-File in den AutoCAD-Graphikbereich ziehen und fallen lassen (damit wird es geladen), dann Befehl _VBARUN und im Dialog dieses: BlAtt_to_HyperLink_AN01.dvb!ThisDrawing.convertBlAtt_to_Hyperlink auswählen und Button 'Ausführen'.

Da werden sowohl das Attribut HYPERLINK als auch der Hyperlink selbst gesetzt.

VORSICHT: dieses ist nicht ausreichend getestet, vorher speichern, nachher kontrollieren
VORSICHT: ich habe jetzt nicht alle Attribute durchgebaut für das Zusammensetzen des HYPERLINKS, aber die Vorlage hast Du damit jetzt.

HTH, - alfred -

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

domda0
Mitglied



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

Beiträge: 149
Registriert: 21.04.2004

erstellt am: 14. Feb. 2011 21:12    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,

und danke erstmal für die schnelle und zahlreiche Hilfe !

@Alfred
Danke vielmals, hab gerade getestet (ohne weiterbauen) und bin begeistert.
Hab jedoch noch ein paar Fragen dazu (da meine Vorlage kläglich falsch war (sorry))
Hab das erste Mal Blöcke mit verschiedenen Attributen verwendet.

Kann ich irgendwie einfach vermeiden dass im Hyperlink Attribute mit <> auftauchen
(Attribute die in diesem Block nicht vorhanden sind beim Zusammenbasteln des Hyperlinks ausnehmen?)
Andererseits könnte ich diese bei der Abfrage an die html auch ignorieren... --> Ist eher ein Schönheitsfehler...

Die zweite wichtigere Sache ist dass das Schreiben des Hyperlinks, durch die Abfrage ob im Attributstext Hyperlink drinsteht, beim ersten mal funktioniert jedoch nicht "updatefähig" bleibt.

--> Nach Änderung diverser Stromkreise oder Herstellerangaben (Austausch eines Produktes) sollte der User das Makro starten können um damit die Hyperlinks auf die Änderungen upzudaten.

Vielleicht kannst mir sagen welche Passage ich da entfallen lassen kann. (Habs probiert,--> Null gefunden, Null geändert, "Null" vor dem PC versteht nur Spanisch)

Danke !!

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

domda0
Mitglied



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

Beiträge: 149
Registriert: 21.04.2004

ACAD 2014

erstellt am: 14. Feb. 2011 22:07    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

Noch eine Sache ist mir aufgefallen,...

Bei der Acad Variante über vba muss ich mittels Definition alle Attribute die vorkommen können separat definieren.
Bei der Excel Variante nicht, hierbei ist es egal wieviele Spalten von aatout ausgegeben werden.

Kann das bei der Acad-Variante vereinfacht werden
(Nur Att's des jeweiligen Blocks auslesen, wie oben schon ansatzweise erwähnt),
oder muss ich hier manuell alle vorkommenden Attribute schon im Vorfeld wissen?

Da in der Gebäudetechnik immer wieder Installationen dazukommen kann ich im Vorfeld schwer die Attribute abstecken,
welche ich bei einer zusätzlichen Lichtsteuerung oder Alarmanlage noch benötigen werde.
Dann müsste ich die Programmierung für das setzen des Hyperlinks immer anpassen, oder?

Beim attout -> excel --> attin wäre das zu vernachlässigen gewesen.

lg Dominik

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


Ex-Mitglied

erstellt am: 14. Feb. 2011 22:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat


BlAtt_to_HyperLink_AN02.zip

 
Hi,

anbei aktualisiert, wobei die einzelnen Attribute von mir jetzt nicht überprüft sind (insbesondere EDV-Kreis-1 kommt 2 mal vor, einmal statt Underline mit Bindestrich, weiss nicht, ob das richtig ist, wie ich es als richtig gesehen hätte, darum prüfen! (Ebenso ob am Abschluss für Dich jetzt ein '&' im Hyperlink gesetzt wird oder nicht)


>> Kann ich irgendwie einfach vermeiden dass im Hyperlink Attribute mit <> auftauchen

Ja, ich hätte in aktuellem Code mal geprüft, ob der String leer ist, wenn JA, wird dieser nicht ausgegeben, z.B.:

Code:
If Len(tSchaltGr) > 0 Then tHyperLinkStr = tHyperLinkStr & "SCHALTGRUPPE=" & tSchaltGr & "&"


>> Attributstext Hyperlink drinsteht, beim ersten mal funktioniert jedoch nicht "updatefähig" bleibt

Auch im Code modifiziert, sollte aber mit ein wenig VBA-Wissen auch für Dich möglich sein, diese Zeile ist modifiziert:

Code:
'statt dieser Zeile:
'tRetVal = (tHasAtt_HOMEPAGEvalue And tHasAtt_HYPERLINKvalue)
'so ausführen:
tRetVal = (tHasAtt_HOMEPAGEvalue)

- alfred -

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

domda0
Mitglied



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

Beiträge: 149
Registriert: 21.04.2004

erstellt am: 14. Feb. 2011 22: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

Hallo Alfred,

Danke vielmals für die Hilfe,
EDV Kreis 1 ist mir auch vorhin aufgefallen (das mit_ ist mir beim löschen durch die Lappen gegangen)
Beim Code verstehe ich glaub ich echt zu wenig, hab da bei dem Inhalt des HYPERLINKvalue bzw. bei der Abfrage oben herumgepfuscht.
Ich glaub ich seh den Wald vor lauter Bäumen nicht mehr,

Danke jedenfalls,
Dominik

Ach ja definitiven Schulungstermin gibt#s noch keinen ;-)
2011 ist aber mal mit viel gutem Willen ein Ziel.

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