| |
 | 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 – zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: Lineweigth ändern (480 mal gelesen)
|
dj_assp Mitglied Tech. Angestellter

 Beiträge: 50 Registriert: 02.10.2006 Autocad VBA
|
erstellt am: 04. Okt. 2006 06:55 <-- editieren / zitieren --> Unities abgeben:         
Hallo Leute Ich schreibe gerade ein Programm mit dem man die lineweigth zuweisen kann. Ich lese eine Datei auslese wo die Strichstärken der Farben definiert sind und die möchte ich jetzt über einen Auswahlsatz denn einzelen Objekten mit Ausnahme der Objekte, wo die lineweigth Eigenschaft von Layer ist. Ich habe mir schon einen Auswahlsatz zurecht gelegt, habe aber Probleme mit dem Rest!!!! FilterType(0) = -4 FilterData(0) = "<=" FilterType(1) = 62 FilterData(1) = 255 ss.SelectOnScreen FilterType, FilterData
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Carsten1210 Mitglied staatl. geprüfter Holztechniker
   
 Beiträge: 1360 Registriert: 24.07.2002
|
erstellt am: 04. Okt. 2006 06:58 <-- editieren / zitieren --> Unities abgeben:          Nur für dj_assp
Hallo Alexander, Erst mal Willkommen im Forum. Womit hast du denn dein Problem. Aus deinem Text werde ich nicht ganz schlau, da er sehr seltsam geschrieben ist. Konkretisier mal dein Anliegen so, das man es versteht. Gruß, Carsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dj_assp Mitglied Tech. Angestellter

 Beiträge: 50 Registriert: 02.10.2006 Autocad VBA
|
erstellt am: 04. Okt. 2006 07:09 <-- editieren / zitieren --> Unities abgeben:         
Hallo Carsten Ich will ein Prgramm schreiben das die Objekte einer Zeichnung prüft ober die Objektfarbe von Layer ist, wenn das nicht der Fall ist soll ein lineweigth zugewiesen werden. Mein Problem ist das ich nicht weiß wie ich bei Objekten die in einem Auswahlsatz enthalten sind. Die Fabe auslesen kann um dann eine lineweigth zu zuweisen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
       

 Beiträge: 13530 Registriert: 30.11.2003 ACAD 2008 Mechanical
|
erstellt am: 04. Okt. 2006 08:26 <-- editieren / zitieren --> Unities abgeben:          Nur für dj_assp
Für das "Durchlaufen" des Auswahlsatzes guck dir mal die Hilfe zu dem "SelectionSet Object" an. Mit der Property "Count" für die Anzahl, einer sich in der Schleife erhöhenden IndexVariable und mit der Methode "Item" für den Objektzugriff solltest du das lösen können. Dann gibts noch ein "Lineweight Example" in der Hilfe, genauso wie ein "Layer Example" die eigentlich das Eigenschaft auslesen und Ändern recht gut dokumentieren ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Carsten1210 Mitglied staatl. geprüfter Holztechniker
   
 Beiträge: 1360 Registriert: 24.07.2002
|
erstellt am: 04. Okt. 2006 08:26 <-- editieren / zitieren --> Unities abgeben:          Nur für dj_assp
Hallo Alex, Schau dir mal diesen Code an: Public Sub Lineweight() Dim sset As AcadSelectionSet Dim FilterType(1) As Integer Dim FilterData(1) As Variant Dim object As AcadObject On Error Resume Next ThisDrawing.SelectionSets.Item("SS2").Delete 'Auswahlsatz löschen, wenn vorhanden Set sset = ThisDrawing.SelectionSets.Add("SS2") 'Auswahlsatz erstellen FilterType(0) = -4 FilterData(0) = "<>" 'Filter setzen ungleich FilterType(1) = 62 'Gruppencode für Objectfarbe FilterData(1) = 256 'Vonlayer sset.Select acSelectionSetAll, , , FilterType, FilterData 'Alle Elemente laut Filter in Auswahlsatz For Each object In sset 'Für jedes Element im Auswahlsatz Select Case object.color 'Select Case Objektfarbe Case acGreen 'Wenn Farbe Grün, object.Lineweight = acLnWt030 'Dann Linienbreite = 0,30mm Case acRed 'Wenn Farbe Rot, object.Lineweight = acLnWt050 'Dann Linienbreite = 0,5mm End Select 'End Select Next 'Next für For Each End Sub Das sollte genau das machen, was du vor hast. Dein Gruppencode 62 war richtig um die Objektfarbe auszufiltern. Allerding ist vonLayer die Nummer 256. Gruß, Carsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
       

 Beiträge: 13530 Registriert: 30.11.2003 ACAD 2008 Mechanical
|
erstellt am: 04. Okt. 2006 08:33 <-- editieren / zitieren --> Unities abgeben:          Nur für dj_assp
Anmerkung: Wenn Objekte die Farbe "von Layer" haben wird kein Gruppencode 62 mit gespeichert. Zu testen mit (entget(car(entsel))) in der Befehlszeile und Anklicken des entsprechenden Objektes. Die Selectionset-Bildung funzt aber trotzdem mit FilterType(1) = 62 FilterData(1) = 256 ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Carsten1210 Mitglied staatl. geprüfter Holztechniker
   
 Beiträge: 1360 Registriert: 24.07.2002
|
erstellt am: 04. Okt. 2006 08:37 <-- editieren / zitieren --> Unities abgeben:          Nur für dj_assp
|

| |
dj_assp Mitglied Tech. Angestellter

 Beiträge: 50 Registriert: 02.10.2006 Autocad VBA
|
erstellt am: 04. Okt. 2006 09:13 <-- editieren / zitieren --> Unities abgeben:         
|