Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  dyn Blöcke 2

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:  dyn Blöcke 2 (1583 mal gelesen)
Christian B.
Mitglied



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

Beiträge: 86
Registriert: 09.03.2006

erstellt am: 08. Feb. 2010 16: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

Hallo da draußen,
http://ww3.cad.de/foren/ubb/Forum145/HTML/001303.shtml#000002
http://ww3.cad.de/foren/ubb/Forum145/HTML/002928.shtml

Nachdem nun einige Monate vergangen sind und ich mich jetzt einigermaßen in Lisp eingearbeitet habe, hab ich nun zwei Funktionen, die auf den Sichtbarkeitsparameter ansetzten.
->test funktioniert soweit, kann aber nur ein Obkekt auswählen und ist mit if
->aa sollte eigentlich ein ganzes Selection-Set auswählen und dann mehrere Bedingungen aktzeptieren, hier liegt das Problem.
Es muss irgendein Fehler mit dem ssget und dem vla-object sein.
Vieleicht kann mir jemand den unterschied im Datentyp erklären, da es ja mit entsel(da verstehe ich allerdings das car nicht, das wählt normalerweise ja nur den ersten Punkt aus einer Liste, entsel und entlast geben ja sowieso nur ein Objekt wieder ?!?)
ist ja  funktioniert.

Gibt es eine Möglichkeit alle Benutzerdefinierten Parameter Einzusehen?
Mit (vlax-dump-object object) oder Variabelüberprüfung im VLisp Editor sehe ich nur IsDynamicBlock= -1 (:VlTrue) ansonsten sehe ich da nichts das nach Benutzerparametern aussieht.

(defun c:test()
  (vl-load-com)
  (setProperty (vlax-ename->vla-object (car (entsel))) "Sichtbarkeit" "Field 3.00m")
)


(defun setProperty (vlaDynBlock sPropertyName rValue / vlaProperty)
  (foreach vlaProperty (vlax-safearray->list (vlax-variant-value (vla-GetDynamicBlockProperties vlaDynBlock)))
    (if (= (vla-get-PropertyName vlaProperty) sPropertyName)
      (vla-put-value vlaProperty (vlax-make-variant rValue))
    ); end if
  ); end foreach
); end defun


(defun c:aa()
  (vl-load-com)
  (blkObj (vlax-ename->vla-object (car (ssget))));zweiter Versuch
  ;(setq blkObj (ssget));erster Versuch
  (setq blkProps (vlax-safearray->list (vlax-variant-value (vla-GetDynamicBlockProperties blkObj))))
  (foreach blkProp blkProps
    (cond
        ((and (= (vla-Get-PropertyName blkProp) "Sichtbarkeit")) Sichtbarkeitsname
(vla-Put-Value blkProp "Field 3.00m") ; Sichtbarkeit
      )
      )
    )
)

ACAD sagt folgendes dazu:

Objekte wählen:
; Fehler: Fehlerhafter Argumenttyp: consp <Selection set: 9>
Bezw. im Editor

LOG Fehlerverfolgung
...............
<1> :ERROR-BREAK
[2] (CAR <Selection set: 9> )
[3] (C:AA)
<4> :CALLBACK-ENTRY
<5> :ARQ-SUBR-CALLBACK

Vielen Dank für Eure Mühen,

Christian B.


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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 08. Feb. 2010 16:39    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 Christian B. 10 Unities + Antwort hilfreich

ich fange mal von oben und auch nur mit einem Punkt an (der Rest kommt sicher noch)

"da es ja mit entsel(da verstehe ich allerdings das car nicht, das wählt normalerweise ja nur den ersten Punkt aus einer Liste, entsel und entlast geben ja sowieso nur ein Objekt wieder ?!?)"

Dann hast du ein sehr spezielles "entsel" - bei allen anderen funktioniert entsel so wie in der Hilfe beschrieben
und gibt eine Liste von Objektnamen und Pick-Punkt Koordinate aus !

------------------
CAD.de System-Angaben  -  CAD on demand  -  User:FAQ(Acad)

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: 08. Feb. 2010 16:40    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 Christian B. 10 Unities + Antwort hilfreich

einfach mal (entsel) gemacht und dir die Rückgabe angesehen ....
und mal (ssget) gemacht und dir die Rückgabe angesehen ? 
und mal (ssname(ssget) 0) gemacht und die Rückgabe angesehen

Wenn das klar ist, gehts weiter  

P.S. der VLIDE hat einen internen Debugger und da gibt es auch eine Hilfe wo die Funktionen mit Parameter und Rückgabe beschrieben sind.

zum VLIDE .. da hat Jörn Bosse mal ne gute anleitung zu geschrieben .. mal suchen !

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 08. Feb. 2010 16:46    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 Christian B. 10 Unities + Antwort hilfreich

Und vorab schonmal die Frage wie deine Funktion "blkObj" ausschaut, oder hast du  da nur eine "setq" vergessen ?
Danach kannst du dir auch in Hilfe ansehen bezüglich "Auswahlsatz" (ssget) und wie man darauf zugreifen kann .
Dazu alle Hilfe-Einträge ansehen von Funktionen die mit "ss" anfangen ()
<jetzt habe ich erkannt das du das ssget nur vergessen hast, da war ich eben noch unsicher, sorry>

AutoLisp Reference - AutoLisp Reference - AutoLisp Functions - [S Functions] - ss*
Als allererstes SSGET selbst und dann SSNAME

------------------
CAD.de System-Angaben  -  CAD on demand  -  User:FAQ(Acad)

[Diese Nachricht wurde von cadffm am 08. Feb. 2010 editiert.]

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

Christian B.
Mitglied



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

Beiträge: 86
Registriert: 09.03.2006

erstellt am: 10. Feb. 2010 00: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

Hallo,

danke für eure Tips, stimmt die Hilfe ist wirklich "hilfreich"   

(defun c:aa()
  (vl-load-com)
  (setq blkSET (ssget))
  (setq blkNrCurr 0)
  (setq blkNrInSET (sslength blkSET))

  (setq blkObj (vlax-ename->vla-object (ssname (blkSET) blkNrCurr)))
  ;(setq blkObj (vlax-ename->vla-object (ssname (ssget) 0))) PRIMA!!!
  ;(foreach blkObj blkSet

  (setq blkProps (vlax-safearray->list (vlax-variant-value (vla-GetDynamicBlockProperties blkObj))))
  (foreach blkProp blkProps ; Name Liste
    (cond
        ((and (= (vla-Get-PropertyName blkProp)
Sichtbarkeit"
))Sichtbarkeitsname

(vla-Put-Value blkProp "Field 3.00m") ; Sichtbarkeit
        )
      )
    )
  (setq blkNrCurr (+ blkNrCurr 1))
)

Soweit bin ich jetzt gekommen.
Allerdings bin ich immer noch nicht so ganz da wo ich das Ding haben will. Ich will irgendwie alle Blöcke im Blockset bearbeiten.
Dazu habe ich einen Zähler eingebaut, der noch irgendwie bis zu der max. Anzahl der Elemente in der Liste zählen soll und dann immer wieder, insofern vorhanden den Parameter abändern soll.

(setq blkObj (vlax-ename->vla-object (ssname (ssget) 0)))
(setq blkObj (vlax-ename->vla-object (ssname (blkSET) blkNrCurr)))
Das erste geht, das zweite mit Variablen nicht.
Hab ich da irgendeinen Denkfehler in der Reihenfolge? (Komme von VBA)

Trotzdem mal soweit herzlichen Dank!

Christian B.

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

Dorfy
Mitglied
Double-Dipl.-Ing. Bleistiftanspitzer


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

Beiträge: 900
Registriert: 21.07.2006

AutoCad2007, ProE, HiCad

erstellt am: 10. Feb. 2010 07:30    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 Christian B. 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Christian B.:
...
Soweit bin ich jetzt gekommen.
Allerdings bin ich immer noch nicht so ganz da wo ich das Ding haben will. Ich will irgendwie alle Blöcke im Blockset bearbeiten.
Dazu habe ich einen Zähler eingebaut, der noch irgendwie bis zu der max. Anzahl der Elemente in der Liste zählen soll und dann immer wieder, insofern vorhanden den Parameter abändern soll.
...
Das erste geht, das zweite mit Variablen nicht.
Hab ich da irgendeinen Denkfehler in der Reihenfolge? (Komme von VBA)

Hi,
na dann bau mal noch ne Schleife ein, da die Hilfe ja hilfreich ist 
Stichwort repeat oder while ... sowas gibt es ja auch in VBA.
sslength könnte auch noch nützlich sein...

------------------
Mfg Heiko

Elefantenjagd in Afrika
"... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..."   (www.uni-leipzig.de/~rotheh/elefant.htm)

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

Christian B.
Mitglied



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

Beiträge: 86
Registriert: 09.03.2006

erstellt am: 10. Feb. 2010 18:36    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,

Jetzt ist sie soweit fertig und klappt prima, danke.

Zum Schluss kommt aber immer noch eine Fehlermeldung:
Befehl: aa

Objekte wählen: Entgegengesetzte Ecke angeben: 4 gefunden

Objekte wählen:
; Fehler: Fehlerhafter Argumenttyp: lentityp nil
BZW.:
<1> :ERROR-BREAK
[2] (vlax-ename->vla-object nil)
[3] (C:AA)
<4> :CALLBACK-ENTRY
<5> :ARQ-SUBR-CALLBACK

Kann mir da noch jemand einen kleinen Anstupser geben?


(defun c:aa()
  (vl-load-com)
  (setq blkSET (ssget))
  (setq blkNrCurr 0)
  (setq blkNrInSET (sslength blkSET))

  (while (<= blkNrCurr blkNrInSET)

  (setq blkObj (vlax-ename->vla-object (ssname (blkSET) blkNrCurr)))

  (setq blkProps (vlax-safearray->list (vlax-variant-value (vla-GetDynamicBlockProperties blkObj))))
  (foreach blkProp blkProps ; Name Liste
    (cond
        ((and (= (vla-Get-PropertyName blkProp) "Sichtbarkeit")) ; Sichtbarkeitsname

(vla-Put-Value blkProp "Field 3.00m") ; Sichtbarkeit
        )
      )
    )
  (setq blkNrCurr (1+ blkNrCurr))
  )
)

Grüße, Christian


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: 10. Feb. 2010 18:39    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 Christian B. 10 Unities + Antwort hilfreich

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