Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Konstruktionslinien versetzen von einer Linie in einem Block

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:  Konstruktionslinien versetzen von einer Linie in einem Block (1316 mal gelesen)
CAD-Tötti
Mitglied



Sehen Sie sich das Profil von CAD-Tötti an!   Senden Sie eine Private Message an CAD-Tötti  Schreiben Sie einen Gästebucheintrag für CAD-Tötti

Beiträge: 116
Registriert: 27.09.2003

ACAD 2009

erstellt am: 19. Okt. 2003 11: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

HI@ALL,

heute hab ich folgende Probleme :-):
1)
Ich möchte eine Konstruktionslinie (xline) versetzen von einer Linie, die sich in einem Block befindet.
2)
Alle XLINES sollen bereits bei der Erstellung auf einem bestimmten Layer liegen, dafür bin ich vorgegangen wie in der Antwort von Holger Brischke (Achtung Werbung: www.defun.de :-)) auf das gleiche Problem mit Bemaßungsbefehlen -> siehe folgenden Beitrag: http://ww3.cad.de/foren/ubb/Forum145/HTML/000261.shtml.
Ich habe mir einen Reactor geschrieben für den Befehl XLINE. Jedoch funktioniert das nicht so wie bei der Bemaßung, ich habe auch _XLINE ausprobiert.

Wer kann mir da helfen, wer hat sowas irgendwo schon mal gesehen ?

Grüße

CAD-Tötti :-)

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 20. Okt. 2003 09:27    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 CAD-Tötti 10 Unities + Antwort hilfreich

also das mit den raktoren ist so am einfachsten

dabei müssen jedoch die einzelnen layer bereits vorhanden sein
ventuell vorlagenzeichnung

(vlr-remove-all :vlr-editor-reactor)
(vlr-editor-reactor nil
  '((:vlr-commandWillStart . MyCommandWillStart)
    (:vlr-commandEnded . MyCommandEnded)
    (:vlr-commandCancelled . MyCommandEnded)
    )
)

(defun MyCommandWillStart (reactor value / )
  (setq value (car value))
  (cond ((= value "XLINE") (setvar "CLAYER" "XLINE"))
((= value "BEM") (setvar "CLAYER" "BEM"))
  )
)
(defun MyCommandEnded (reactor value / )
  (setvar "CLAYER" "0")
)


dein problem mit der xline parallel zu einer linie innerhalb eines blockes muss ich mir erst überlegen

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

CAD-Tötti
Mitglied



Sehen Sie sich das Profil von CAD-Tötti an!   Senden Sie eine Private Message an CAD-Tötti  Schreiben Sie einen Gästebucheintrag für CAD-Tötti

Beiträge: 116
Registriert: 27.09.2003

ACAD 2009

erstellt am: 20. Okt. 2003 18:55    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

Hier gibt er mir dann folgende Fehlermeldung aus:

Befehl: _xline ; Fehler: Einstellung für AutoCAD-Variable zurückgewiesen:
"CLAYER" "XLINE"

Grüße

CAD-Tötti

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

CAD-Tötti
Mitglied



Sehen Sie sich das Profil von CAD-Tötti an!   Senden Sie eine Private Message an CAD-Tötti  Schreiben Sie einen Gästebucheintrag für CAD-Tötti

Beiträge: 116
Registriert: 27.09.2003

ACAD 2009

erstellt am: 20. Okt. 2003 19:05    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

sorry, klappt doch :-), aber wie kann ich denn eine Abfrage vorschalten und notfalls (wenn nicht vorhanden) den Layer anlegen ?

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 20. Okt. 2003 20: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 Nur für CAD-Tötti 10 Unities + Antwort hilfreich

Hallo CAD-Tötti,

ob ein Layer vorhanden ist kannst du mit (tblobjname..) prüfen. Siehe dazu dort: http://ww3.cad.de/foren/ubb/Forum145/HTML/000261.shtml
Einen Layer erzeugen solltest du innerhalb eines Reactors mit (entmake ..)
Das könnte dann so aussehen:

Code:

  (entmake
    (if (< 14 (atoi(substr (getvar "acadver") 1 2)));AutoCAD-Version abfragen
      (list
'(0 . "LAYER")
'(100 . "AcDbSymbolTableRecord")
'(100 . "AcDbLayerTableRecord")
(cons 2  ltbs_name);Name als String
'(70 . 0)
(cons 62  ltbs_color);Farbe als Int
(cons 6  ltbs_ltyp);Linientyp als String
(cons 290 ltbs_prn);ab R15 (2000) erst möglich 0 oder 1
'(370 . -3)
)
      (list
'(0 . "LAYER")
'(100 . "AcDbSymbolTableRecord")
'(100 . "AcDbLayerTableRecord")
(cons 2  ltbs_name);Name als String
'(70 . 0)
(cons 62  ltbs_color);Farbe als Int
(cons 6  ltbs_ltyp);Linientyp als String
'(370 . -3)
)
      )
    )

Bei Fragen ...

Grüße Holger

------------------
Holger Brischke
(defun - Lisp over night!
AutoLISP-Programmierung für AutoCAD
NEU: AutoLISP- Projektschulung
NEU: Praxisorientierte Schulungen und Workshops durch die bekannten CAD.de Moderatoren
AutoCAD, AutoCAD LT, AutoCAD Mechanical, Mechanical Desktop, Architectural Desktop

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 21. Okt. 2003 08:25    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 CAD-Tötti 10 Unities + Antwort hilfreich

habe das ganze so ergänzt , dass die layer automatisch erstellt werden, falls sie nicht vorhanden sind

mit dieser zeile kannst du nun für alle möglichen autocad-befehle
layer festlegen
z.B.: beim start vom befehl circle (kreis) sold der layer KREISLAYER mit der farbe 7 als aktuell eingestellt werden

((= value "CIRCLE") (setlayer "KREISLAYER"  7))

nuin das vollständige neue lisp

(vlr-remove-all :vlr-editor-reactor)
(vlr-editor-reactor nil
  '((:vlr-commandWillStart . MyCommandWillStart)
    (:vlr-commandEnded . MyCommandEnded)
    (:vlr-commandCancelled . MyCommandEnded)
    )
)

(defun MyCommandWillStart (reactor value / )
  (setq value (car value))
  (cond ((= value "XLINE")  (setlayer "XLINE" 6))
        ((= value "BEM")    (setlayer "BEM"  3))
((= value "CIRCLE") (setlayer "KREISLAYER"  7))
((= value "LINE")  (setlayer "LINIENLAYER"  7))
  )
)
(defun MyCommandEnded (reactor value / )
  (setvar "CLAYER" "0")
)

(defun setlayer ( layer farbe / )
  (if (not (tblsearch "LAYER" layer))
    (entmake
      (list
      (cons 0 "LAYER")
      (cons 100 "AcDbSymbolTableRecord")
      (cons 100 "AcDbLayerTableRecord")
      (cons 2 layer)
      (cons 70  0)
      (cons 62  farbe)
      )
    )
  )
  (setvar "clayer" layer)
)

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