Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  AWS ansetzen

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:  AWS ansetzen (996 mal gelesen)
cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

Windows 10
64bit system
Autocad Civil3d 2020 ENGLISH
Visual Studio 2019
OpenDCL.Runtime.9<P>

erstellt am: 04. Apr. 2011 08:29    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 Kann mir jemand zeigen, wie ich mit Hilfe eines Auswahlsatzes alle plines aufgreife und den block "lange" in die Mitte des plines setze?

(defun c:sl ( /
      OBJ
      LAYER
      FL)
  (if(and (setq OBJ (car (entsel "\nselect pline !\n")))
  (setq LAYER (cdr(assoc 8 (entget OBJ))))
  (setq FL (rtos(vla-get-length(vlax-ename->vla-object OBJ)) 2 2))
  )
    (command "_-insert" "lange" (getpoint "\npik point\n") (getvar "DIMSCALE") (getvar "DIMSCALE") 0 LAYER FL)
    )
  )

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 04. Apr. 2011 08:38    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 cadplayer 10 Unities + Antwort hilfreich

wie ist es hiermit:

(if(and(tblobjname "BLOCK" "LANGE")
      (setq AWS(ssget "_X" (list(cons 410(getvar "CTAB"))'(0 . "*POLYLINE"))))
  )
  (progn
    (setq I -1)
    (repeat (sslength AWS)
      (setq OBJ (ssname AWS(setq I (1+ I))))
      (command "_divide" OBJ "BLOCK" "LANGE" "_y" 2)
    ) 
  )
)

------------------
      - 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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 04. Apr. 2011 09: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

Prima,
die Abfrage:
(setq OBJ (car AWS)))
  (setq LAYER (cdr(assoc 8 (entget OBJ))))
  (setq FL (rtos(vla-get-length(vlax-ename->vla-object OBJ)) 2 2)

geht nicht ohne weiteres einzubauen

malformed list on input

wie ist das zu verstehen?

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 04. Apr. 2011 09: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 Nur für cadplayer 10 Unities + Antwort hilfreich

klar kann man das einbauen, doch wozu ?? Das hasts du bisher nicht beschrieben ...

und auf Elemente des AWS greift man mit ssname zu .. car und co sind für Listen..

------------------
  - 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

spider_dd
Mitglied



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

Beiträge: 1111
Registriert: 27.11.2003

Win 10Pro
Intel(R) Core(TM) i7-7700
NVIDIA Quadro P1000
ACAD, Civil-3D 2018

erstellt am: 04. Apr. 2011 09:13    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 cadplayer 10 Unities + Antwort hilfreich

In der ersten Zeile ist eine Klammer zuviel, die fehlt dafür in der letzten. Vielleicht liegt es schon daran?

Gruß
Thomas

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 04. Apr. 2011 09:23    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

als Endresultat sollte die Werte LAYER und FL in den Block eingefügt werden.
Kann das so aussehen ?

(defun c:sl ( /
      OBJ
      LAYER
      FL)
  (setq AWS(ssget (list(cons 410(getvar "CTAB"))'(0 . "*POLYLINE"))))
  (if(and (setq OBJ AWS))
      (setq LAYER (cdr(assoc 8 (entget OBJ))))
      (setq FL (rtos(vla-get-length(vlax-ename->vla-object OBJ)) 2 2))
;(if(and(tblobjname "BLOCK" "LANGE")))
 
 
  )
  (progn
    (setq I -1)
    (repeat (sslength AWS)
      (setq OBJ (ssname AWS(setq I (1+ I))))
      (command "_divide" OBJ "BLOCK" "LANGE" "_y" 2)
    )
  )
)

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 04. Apr. 2011 09:24    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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von cadplayer:
Kann das so aussehen ?

Nein.

------------------
  - 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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 04. Apr. 2011 09:42    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

wie gesagt so funktioniert das nicht - wie bekomme ich aus dem AWS die Infos für LAYER und FL

(defun c:sl ( /
      AWS
      LAYER
      FL)
  (if(and(tblobjname "BLOCK" "LANGE")
(setq AWS(ssget (list(cons 410(getvar "CTAB"))'(0 . "*POLYLINE"))))
(setq LAYER (cdr(assoc 8 (entget AWS))))
(setq FL (rtos(vla-get-length(vlax-ename->vla-object AWS)) 2 2))
 
)
    (progn
      (setq I -1)
      (repeat (sslength AWS)
(setq OBJ (ssname AWS(setq I (1+ I))))
(command "_divide" OBJ "BLOCK" "LANGE" "_y" 2)
)
      )
    )
  )
 

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 04. Apr. 2011 09:45    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 cadplayer 10 Unities + Antwort hilfreich

der Auswahlsatz referenziert keine LAyer, das ist Objekten vorbehalten ...

wenn dann so:

(if(and(tblobjname "BLOCK" "LANGE")
      (setq AWS(ssget "_X" (list(cons 410(getvar "CTAB"))'(0 . "*POLYLINE"))))
  )
  (progn
    (setq I -1)
    (repeat (sslength AWS)
      (setq OBJ (ssname AWS(setq I (1+ I))))
      (setq LAYER (cdr(assoc 8 (entget OBJ))))
      (setq FL(vla-get-length(vlax-ename->vla-object OBJ))) 
      (command "_divide" OBJ "BLOCK" "LANGE" "_y" 2)
    ) 
  )
)

------------------
  - 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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 04. Apr. 2011 10:17    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

Ich würde gern die Argumente für LAYER und FL mit insert ausfüllen

(command "_divide" OBJ "BLOCK" "LANGE" "_y" 2)
setzt den Block "LANGE" auf den Mittelpunkt des plines

(command "_-insert" "lange" (getpoint "\npik point\n") (getvar "DIMSCALE") (getvar "DIMSCALE") 0 LAYER FL)
möchte ich so umformen, das der Block an den bereits bestimmten Punkt gesetzt wird

Ich hoffe das war jetzt nicht zu verwirrend formuliert

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

gmk
Mitglied
Dipl.-Ing.(FH) Vermessung


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

Beiträge: 667
Registriert: 23.10.2002

Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM

erstellt am: 04. Apr. 2011 14:13    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 cadplayer 10 Unities + Antwort hilfreich

Servus DD:-)

... da schaust alle 5 Wochen mal ins Forum, wer is ganz oben ... :-)


Die Punkte aus _divide werden hinten an die AutoCAD Datenbank angehängt.

Vor dem _divide das letzte Objekt in der Datenbank merken (SETQ lo (ENTLAST)) und nach _divide mit (ENTNEXT lo) auf die Punkte zugreifen.

Schreib dir mal eine Funktion die den aws in einer Liste ablegt, dann kannst mit FOREACH durch den aws blättern. Wennst nicht weisst wie, schreib mir eine Email, hab' deine Adresse nicht mehr.

Ciao Georg

------------------
http://www.xxx-tausend.info

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

wronzky
Ehrenmitglied V.I.P. h.c.
CAD-Dienstleistungen für Architekten



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

Beiträge: 2154
Registriert: 02.05.2005

CAD:
AutoCAD 2.6 bis 2014
ADT 2005 - 2014
Arcibem
System:
Windows 2000, XP, NO VISTA
Internet-Startseite:
http://www.archi.de

erstellt am: 04. Apr. 2011 15:24    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 cadplayer 10 Unities + Antwort hilfreich

Hallo,
den Mittelpunkt einer Kurve kannst Du mit folgender Funktion ermitteln:
Code:
(defun voxel-get-mid-point (ele / )
  (vl-load-com)
  (vlax-curve-getPointAtDist ele (/ (vlax-curve-getDistAtPoint ele (vlax-curve-getEndPoint ele)) 2.0))
)
Jetzt brauchst Du nur noch an passender Stelle mit
Code:
(voxel-get-mid-point obj)
den Mittelpunkt übergeben...

Grüsse, Henning

------------------
Henning Jesse
VoxelManufaktur
Computer-Dienstleistungen für Architekten und Ingenieure

  http://www.voxelman.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