Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  Ansichtsfenster per VBA zuschneiden

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 - zum dritten Mal in Folge, eine Pressemitteilung
Autor Thema:  Ansichtsfenster per VBA zuschneiden (1516 mal gelesen)
idraH
Mitglied



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

Beiträge: 64
Registriert: 22.04.2002

ACAD 2006
Win XP

erstellt am: 15. Dez. 2009 12:28    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 allerseits,
ich bräuchte mal Hilfe für o.g. Aufgabenstellung.
Zur Zeit lege ich automatisch neue Layouts an und in jedem Layout ein Ansichtsfenster mit folgendem Code:
Code:
Set newVport = ThisDrawing.PaperSpace. _
                                    AddPViewport(center, Laenge, Hoehe)

Da damit ja nur ein rechteckiges AF erzeugt wird, würde ich im Anschluß dieses AF gern polygonal zuschneiden um ein Schritfeld freizusetllen.
Leider habe ich bis jetzt keine Methode in "newVport" gefunden welche dafür nutzbar scheint und hoffe auf Eure Unterstützung 

viele Grüße, Hartmut

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


Ex-Mitglied

erstellt am: 15. Dez. 2009 13:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

Methode (bzw. ein abgeleitetes Interface zu AcadPViewport mit Funktionen dafür) hätte ich auch nicht gefunden. Es wird voraussichtlich darauf hinauslaufen müssen, dies mit  SendCommand "_mview" & vbCr & "_o" & vbCr  abzuhandeln und eine zuvor erzeugte Polylinie bzw. Region dann zu wählen.

Arbeitest Du ev. mit dotNET ==> da schon. Ob's mit Lisp ginge, kann ich Dir leider nicht sagen (würde aber mal nicht ausschliessen, auch da zu suchen).

Sorry, - alfred -

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

idraH
Mitglied



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

Beiträge: 64
Registriert: 22.04.2002

ACAD 2006
Win XP

erstellt am: 15. Dez. 2009 14:11    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

danke erstmal für die (wenn auch ernüchternde) Antwort.

da ich Position und Maße des SF und des AF kenne, würde ich gern auf eine manuelle Aktion (wählen der Polylinie) verzichten. Könnte ich an "SendCommand" eine zuvor erzeugte Polylinie übergeben, so dass keine Nutzeraktion nötig wird?

Programmierung läuft rein in VBA und Lisp hab ich mich leider bis jetzt immer vor gedrückt.
Könnte ev. noch irgendwas über XDATA laufen? (Friere darüber einige Layer im AF)?

viele Grüße, Hartmut

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


Ex-Mitglied

erstellt am: 15. Dez. 2009 14:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> Könnte ich an "SendCommand" eine zuvor erzeugte Polylinie übergeben

Ja, den Handle der Polylinie solltest Du ja kennen, wenn/weil Du diese erzeugt hast, dann bei Sendcommand mitgeben:

(handent "HANDLE")

wobei Du statt HANDLE den Handle der Poly (Hex-Wert) einsetzt.

- alfred -

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

idraH
Mitglied



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

Beiträge: 64
Registriert: 22.04.2002

ACAD 2006
Win XP

erstellt am: 15. Dez. 2009 14: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

So, hab jetzt noch ein wenig gegoogelt und folgenden Code gefunden + modifiziert so das er hoffentlich macht was ich möchte.

Trotzdem schade dass es über reines VBA scheinbar nicht möglich sein soll.
Danke Alfred für deinen entscheidende Hilfe.

Code:
Dim acVp As AcadViewport
Dim acPline As AcadLWPolyline
Dim sHandle As String
Dim acEnt As AcadEntity
Dim vPt As Variant
'''''''''''''''''''''''''''''''''''''''
On Error GoTo Err_Control

ThisDrawing.SetVariable "CMDECHO", 0
'ThisDrawing.Utility.GetEntity acEnt, vPt, "Select polyline to outline viewport"
'If TypeOf acEnt Is AcadLWPolyline Then
'    Set acPline = acEnt
'End If
Dim PLpoints(0 To 13) As Double
PLpoints(0) = 5: PLpoints(1) = 5
PLpoints(2) = 262: PLpoints(3) = 5
PLpoints(4) = 262: PLpoints(5) = 30
PLpoints(6) = 292: PLpoints(7) = 30
PLpoints(8) = 292: PLpoints(9) = 205
PLpoints(10) = 5: PLpoints(11) = 205
PLpoints(12) = 5: PLpoints(13) = 5
Set acPline = ThisDrawing.PaperSpace.AddLightWeightPolyline(PLpoints)
acPline.Closed = True
'If acPline.Closed = False Then
    'MsgBox "Polyline must be closed"
    'Exit Sub
'End If
sHandle = acPline.Handle
ThisDrawing.SendCommand "._MVIEW" & vbCr & "_OB" & " (handent " & Chr(34) & _
sHandle & Chr(34) & ")" & vbCr

Exit_Here:
    ThisDrawing.SetVariable "CMDECHO", 1
    Exit Sub
Err_Control:
    MsgBox Err.Number & " --> " & Err.HelpContext
    Resume Exit_Here

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


Ex-Mitglied

erstellt am: 15. Dez. 2009 15:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

danke für die Rückmeldung!

Eine kleine Rückmeldung zu Deinem Code lass mich noch anbringen:

>> PLpoints(12) = 5: PLpoints(13) = 5

Die Dimensionierung der Punkte kann bei 11 enden, denn der Punkt 5,5,0 muss am Ende nicht mehr erzeugt werden, da Du mit .Close die Polylinie danach schliesst. Der Punkt 5,5,0 wäre dann im Polylinienverlauf doppelt vorhanden und eigentlich nicht schön.

- alfred -

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



Anzeige:Infos zum Werbeplatz >>

AVC Sawing Table CAD APP für Datenaustausch, Möbel, Messestände

Plugin AVC_Saw for AutoCAD and BricsCAD The measurement of solids. List of its dimension for sawing|cutting with a list of edge bandings and sloped edges. Paste list to AutoCAD table, Excel, Cutting3, OptiCut, Viyar and other

idraH
Mitglied



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

Beiträge: 64
Registriert: 22.04.2002

ACAD 2006
Win XP

erstellt am: 15. Dez. 2009 15:48    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

Danke Alfred, für den Hinweis.

hatte schon vermutet, dass bei .close, Punkt 12/13 entfallen könnte (kann man ja beim Zeichnen auch so machen - wenn man beim vorletzten Punkt mit S(chliessen) beendet ist die PL geschlossen (PL-Eigenschaft "Geschlossen"="JA").
Dass es nebenbei aber den von Dir beschriebenen Nebeneffekt geben würde hatte ich allerdings nicht bedacht/vermutet  (Beim PL zeichnen ist die Eigenschaft "Geschlossen" der PL ja nicht zwangsläufig "JA" wenn man den letzen Punkt auf den Startpunkt setzt.)

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