Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Probleme gesucht...

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:  Probleme gesucht... (2256 mal gelesen)
mapcar
Mitglied
CADmin



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

Beiträge: 1250
Registriert: 20.05.2002

Time flies like an arrow, fruit flies like a banana (Groucho Marx)

erstellt am: 05. Apr. 2003 00: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

für meine Lösungen;-)

In Kürze soll meine 4. Website zum Thema AutoLisp an den Start gehen, und zwar - unter dem Titel 'Praxis' - über alles zum Thema Blöcke und Attribute. Bisher habe ich folgende Themen fertig bzw. in Arbeit:

Auswahl von Blöcken mit ssget
Auswahl anhand von Attribut(wert)en
Auswahl anhand von Geometrie-Eigenschaften
Erzeugen von (anonymen) Blöcken
Redefinieren von Blöcken
Hinzufügen/Entfernen von Attributen
Synchronisieren von vorh. Inserts
Synchronisieren der Definition
Synchronisieren/Zurücksetzen von Attributen
Regular Expressions in Attributen
Erstellen von Listen mit Attributwerten (->Stücklisten)
Quast-Funktionen (Atrribute [wie] mit dem Quast übertragen usw.)

Das Ganze wird dann eine Lisp-Funktionsbibliothek, mit der man hoffentlich jede gängige Aufgabenstellung zum Thema mit 10-20 Codezeilen erschlagen kann. Es soll aber keine Konkurrenz zu den Expresstools werden, die einen Teil dieser Funktionalität auf Anwenderebene bieten, sondern eben Funktionen für Lisper.

Wer da noch Aufgabenstellungen beisteuern kann, bitte im HIER und JETZT melden. Alles, was Sinn macht - aber bitte nicht 'wie kriege ich hin, dass bei allen Inserts der Kreis rot ist, nur bei einem soll er grün sein'. Das geht nicht, wissen wir, akzeptieren wir doch, oder?

Ich hoffe aber auf zahlreiche sinnvolle Vorschläge, die ich aufgreifen und umsetzen kann. Je mehr Beteiligung da ist, umso interessanter wird (hoffentlich) das Ergebnis.

Gruss, Axel

------------------
Meine AutoLisp-Seiten
Meine private Homepage
Mein Angriff auf dein Zwerchfell
Mein Lexikon der Fotografie
Mein gereimtes Gesülze
Meine Überzeugung...

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

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



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

Beiträge: 2490
Registriert: 02.11.2001

Windows 10 64bit
AutoCAD Architecture 2018/2019 (deu/eng)
AEC-Collection 2019 (Revit und Zeugs)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung (mies implementierter Schrott)

erstellt am: 05. Apr. 2003 14:35    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 mapcar 10 Unities + Antwort hilfreich

Hi Axel,
ich hab' da eines...
Und zwar geht es um String-Handling.
Die Verarbeitung von (get[irgendwas] Funktionen ist mir bisher nicht richtig mit dynamischen Werten gelungen.
Beispiel:
Ich erzeuge 'ne Liste von Textstilen aus 'ner Datei.
Diese Textstile möchte ich nun via getkword (Über Kommandozeile oder Rechtsklick-Menü) ansprechen können.
Damit das vernünftig funktioniert, muß im initget-String ja Eindeutigkeit bezüglich der Optionswahl herrschen. Die Optionswahl wird in der Kommandozeile ja über 'n Shortcut realisiert, d.h. über den (die) Buchstaben die Uppercase geschrieben sind.
z.B. "Standard sTandard1 stIl1 stiL2 stil3 STil4 sTIl5 stIL6 stiL7 stil7 STIl8 sTIL9 ..." usw.
Also ein Ding, was mir aus 'ner Liste von Strings eine Liste zurückgibt in der jeder Uppercase-Shortcut eindeutig ist, wobei ein solcher Shortcut ja durchaus mehr als ein oder zwei Zeichen haben könnte.
Auch wenn es keinen Sinn machen würde so einen initget-string mit hunderten von Werten zu erstellen, geht es mir um eine Lösung die immer passt. Egal wie lang die Liste wäre. Natürlich darf die Ausgangsliste keinerlei doppelte Eintragungen enthalten (da wäre eine Eindeutigkeit ja irgendwann nicht mehr realsierbar["Wo" "wO" "WO" -> Schluß, aber das ist nicht der Kern des Problems. Es geht nur um o.g. Problemlösung.

------------------
Ciao,
Marc

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

mapcar
Mitglied
CADmin



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

Beiträge: 1250
Registriert: 20.05.2002

Time flies like an arrow, fruit flies like a banana (Groucho Marx)

erstellt am: 05. Apr. 2003 20:54    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 Marc,

ist ja ein nettes Problem, aber das hat ja nun überhaupt nichts mit Blöcken und Attributen zu tun;-) Ich denke aber mal drüber nach!

------------------
Meine AutoLisp-Seiten
Meine private Homepage
Mein Angriff auf dein Zwerchfell
Mein Lexikon der Fotografie
Mein gereimtes Gesülze
Meine Überzeugung...

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

mapcar
Mitglied
CADmin



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

Beiträge: 1250
Registriert: 20.05.2002

Time flies like an arrow, fruit flies like a banana (Groucho Marx)

erstellt am: 05. Apr. 2003 21: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

Marc, hab das mal auf die Schnelle gemacht. Es scheint plausibel, unter der Voraussetzung, dass nach strlen vorsortiert wird. Ohne diese Sortierung baut man sich ein Deadlock ein, wenn am Ende ein kurzes kword kommt und alle Kombinationen schon vergeben sind.

Kann dir aber nicht sagen, ob das *garantiert* immer funktioniert. Da müsste man sich tief reindenken und ein paar Beweise antreten.

(defun mk-shortcuts(los / used _str2list)
  (setq los
    (vl-sort
      los
      (function(lambda(s1 s2 / )(<(strlen s1)(strlen s2))))
    )
  )
  (mapcar
    (function
      (lambda(str / loc done l m n)
        (setq l(strlen str)m 1 n 1)
        (while(not done)
          (if(not(member(substr str m n)used))
            (progn
              (setq used(cons(substr str m n)used))
              (setq str(cons str(substr str m n)))
              (setq done 1)
            )
            (progn
              (setq m(1+ m))
              (if(> m l)(setq m 1 n(1+ n)l(1- l)))
            )
          )
        )
        str
      )
    )
    los
  )
)

Testen:

(mk-shortcuts
  '("abcde" "defgh" "abg" "abcd" "bca" "cb" "abcdf" "abcg"
                "abcf" "ab" "abc" "bcaf" "bcfa" "abcef"))

==>>>

(("cb" . "c") ("ab" . "a") ("abg" . "b") ("bca" . "bc") ("abc" . "ab") ("abcd" . "d") ("abcg" . "g") ("abcf" . "f") ("bcaf" . "ca") ("bcfa" . "cf") ("abcde" . "e") ("defgh" . "h") ("abcdf" . "cd") ("abcef" . "ce"))

Teste mal mit grösseren Mengen, wenn's nicht klappt, noch mal fragen!

Gruss, Axel

------------------
Meine AutoLisp-Seiten
Meine private Homepage
Mein Angriff auf dein Zwerchfell
Mein Lexikon der Fotografie
Mein gereimtes Gesülze
Meine Überzeugung...

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

mapcar
Mitglied
CADmin



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

Beiträge: 1250
Registriert: 20.05.2002

Time flies like an arrow, fruit flies like a banana (Groucho Marx)

erstellt am: 05. Apr. 2003 21: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

Ach so (hab jetzt nicht gefunden, wie ich den Beitrag editieren kann): Das _str2list mach weg, hat keine Bedeutung.

------------------
Meine AutoLisp-Seiten
Meine private Homepage
Mein Angriff auf dein Zwerchfell
Mein Lexikon der Fotografie
Mein gereimtes Gesülze
Meine Überzeugung...

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

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



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

Beiträge: 2490
Registriert: 02.11.2001

Windows 10 64bit
AutoCAD Architecture 2018/2019 (deu/eng)
AEC-Collection 2019 (Revit und Zeugs)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung (mies implementierter Schrott)

erstellt am: 06. Apr. 2003 13:31    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 mapcar 10 Unities + Antwort hilfreich

Hi Axel,
erstmal Danke für den Lösungsansatz.
Sieht gut aus bisher, ich hab's mal mit 'ner Liste aus 580 Layern laufen lassen. Das hat geklappt. Ich denke das reicht aus.
Einzige Sache die mir auffiel: Bestimmte Sonderzeichen müßten ausgenommen werden, da kann man bei manchen keinen Unterschied zwischen Upper- und Lowercase sehen (logisch: was soll auch schon aus "$" oder "_" oder "-" werden....). Aber das steht auf'm anderen Blatt. Ich hatte schon so etwas ähnliches wie Du gebastelt, mir das jedoch wie üblich zu kompliziert gemacht (mit'm wcmatch-Vergleich wobei sich der Pattern dynamisch verändert...). Jedoch lief mein Ding nicht mit jeder Liste und hat so ab 60 Einträgen Mist gebaut.

Zum zweiten: Sorry irgendwie hab' ich Deinen ursprünglichen Post hier etwas mißverstanden. Ich habe wohl nicht aufmerksam genug gelesen, dachte es geht um "Praxis" allgemein...
Ist eigentlich mein XRef-Suche Problem auch ein Ding was in Deine Kategorie "Praxis" fällt? 'n Xref ist ja im Grunde genommen auch nur 'n Block?! ;-)

------------------
Ciao,
Marc

[Diese Nachricht wurde von marc.scherer am 06. April 2003 editiert.]

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

mapcar
Mitglied
CADmin



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

Beiträge: 1250
Registriert: 20.05.2002

Time flies like an arrow, fruit flies like a banana (Groucho Marx)

erstellt am: 06. Apr. 2003 23: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

Zu 1: Ich wollte dir ja auch nicht die ganze Arbeit abnehmen, sondern nur mal das liefern was ich da so als Algo sehe - deswegen ist auch noch gar kein strcase drin, sondern werden nur die dotted pairs geliefert.

Wenn du bestimmte Zeichen ausnehmen willst, handelst du dir eine Menge Probleme ein - aber natürlich hast du Recht: Grosse Dollars macht z.Zt. Bush im Irak, aber ein ASCII-Zeichen gibts dafür nicht. Die Probleme musst du im Vorfeld klären: Eine Asso-Liste erstellen:
( (<ungereinigt> . <gereinigt> ) ...) z.B.
( ("thisone|thatone" . "thisonethatone") ...)
Mit mapcar'cdr kannst du dann die Hotkeys anfordern, z.B.:
( ("thisonethatone" . "is") ...)
und dann musst du über die Assoliste auf die ungereinigte Version zurück:
( ("thisone|thatone" . "is") ...)
Und dann erst kannst du strcasen:
( "thISone|thatone" ...)
Das kannst du mit (str-replace(car pair)(strcase(cdr pair))) machen (gibts bei mir auf den blauen Seiten).

Wenn es ausschliesslich um Layer aus einer Tabelle geht, kannst du Duplicates von vernherein ausschliessen - das hat AutoCad dann schon getestet. Wenn die Datenherkunft aber nicht integer ist, musst du sowas natürlich ausgiebigst überprüfen - wenn da dups drin sind, geht das natürlich in die Hose. Die dups kriegen nicht den selben key - daher wird die Funktion i.d.R. abstürzen, wenn die Buchstaben ausgehen. Meine Funktion testet keinerlei Underflow, sie verlässt sich drauf, ordentliche Daten zu kriegen.

Allerdings musst du nach dem Reinigen auf dups kontrollieren: sowas wie ("this$one" "this|one" ...) darf in den Daten nicht vorkommen, weil beide zu "thisone" werden.

Übrigens: Sicher ist das Ganze nicht! Ich schicke dir morgen mal einen Absturzbeweis. Das heisst nicht, dass die Funktion eine Macke hat, es heisst, dass dieses System der Hotkeys so nicht 100% funktioniert.

Zu 2: Ja und nein, weiss noch nicht so genau - deswegen dauert's auch so lange;-))) Kannst du mir dazu mal Daten schicken? Mit ein paar Testdaten komme ich nicht auf das Problem - ich finde nur Kleinigkeiten. Entweder du generierst welche - oder du schickst echte, da würde ich dann lieber vorher ein Agreement ausmachen und unterschreiben. Solltest du mit deiner Fürma abklären.

Gruss, Axel

------------------
Meine AutoLisp-Seiten
Meine private Homepage
Mein Angriff auf dein Zwerchfell
Mein Lexikon der Fotografie
Mein gereimtes Gesülze
Meine Überzeugung...

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: 07. Apr. 2003 09:53    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 mapcar 10 Unities + Antwort hilfreich

Hallo Axel,

hat eigentlich mehr was mit Texten, insofern auch mit den Attributen zu tun.
Das PCRE ist ja eine tolle Sache. Genial wäre es dazu eine SUB zu haben, die die Window's Joker in die entsprechenden Zeichenketten passend zum PCRE umbaut.

Grüße Holger

------------------
Holger Brischke
CADlon - Lisp over night!
Neue Tool's im Free-&Download
Zugang zum Download schon gesichert?

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

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



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

Beiträge: 2490
Registriert: 02.11.2001

Windows 10 64bit
AutoCAD Architecture 2018/2019 (deu/eng)
AEC-Collection 2019 (Revit und Zeugs)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung (mies implementierter Schrott)

erstellt am: 07. Apr. 2003 09:56    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 mapcar 10 Unities + Antwort hilfreich

Hi Axel,
wenn Du Demo-Daten willst, die einer realistischen Suche bei uns entsprechen, muß ich Dir 'ne Mail schicken die ca. 12MB groß ist.
Möchtest Du die haben?
Wenn ja, schick ich sie Dir rüber.
Ansonsten sag ' ich Dir den ca. Umfang Objekte / Texte.
Sach wat Hans ;-)

------------------
Ciao,
Marc

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

Geos
Mitglied
Vermessungstechniker i.R.


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

Beiträge: 1017
Registriert: 21.09.2001

ACAD Map 2010, Win 7 Pro
eigene Lisp's<P>HW: Core i7 860, 2.8 GHz
3.3 GB, NVIDIA GeForce GTS 250

erstellt am: 08. Apr. 2003 10: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 mapcar 10 Unities + Antwort hilfreich

Servus Axel

Falls es nicht schon beim "Redefinieren von Blöcken" eingeflossen ist:
Die Funktion "ATTREDEF" gibts ja schon - aber einige Male hätte ich mir schon gewünscht, dass sie die "neuen" Attribute an der alten Position, Größe, Drehung, etc. eingefügt werden.
---
Du hast mir seinerzeit bei einer Funktion geholfen, die das Einfügen von Blöcken unabhängig von der Attributanzahl ermöglicht. Es sollten dabei die Attributswerte namentlich abgefragt werden.

Es sind dann folgende Funktionen entstanden - vielleicht sind sie auch die bessere Beschreibung:

;***************************************************
;liefert für den übergebenen Blocknamen eine Liste der Attributsanfragen

(defun attriblist (blkname / elist ename atrdeflist art atrname attlist)
  (setq attlist nil)
  (setq elist (tblsearch "BLOCK" blkname))
  (setq ename (cdr (assoc -2 elist)))             
  (while ename
    (setq atrdeflist (entget ename))            ;datenliste
    (setq art (cdr (assoc 0 atrdeflist)))         
    (if (= art "ATTDEF")
      (progn
        (setq atrname (cdr (assoc 3 atrdeflist)))        ; attributanfrage
        (setq attlist (cons atrname attlist))
      )
    )
    (if (setq ename (entnext ename))        ; weitere?
      (setq atrdeflist (entget ename))       
    )
  )
  (setq attlist (reverse attlist))
)
;----------------------------------------
;zusammen mit der obigen Funktion (attriblist) fügt diese Funktion
;Blöcke ein. Die Funkt. (attriblist) ermittelt die Anzahl der Attribute,
;sodass mit (insauto) Blöcke mit beliebig vielen Attributen eingefügt werden können

(defun insauto (blkname einfpkt skal richt / attlist attwert)
  (setq attfrage (car (setq attlist (attriblist blkname)))) 
  (command "_-INSERT" blkname einfpkt skal "" richt)
  (while attlist
    (if (/= attfrage "")
      (progn
        (setq attwert (getstring (strcat "\nBitte " attfrage " eingeben: ")))
        (command attwert)
      )
    )
    (setq attfrage (car (setq attlist (cdr attlist))))
  )
)
;***************************************************

Passt das zu Deinem Thema? Mehr fällt mir im Moment auch nicht ein.

Gruß, Ernst

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

CADchup
Ehrenmitglied V.I.P. h.c.




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

Beiträge: 3329
Registriert: 14.03.2001

Sicher ist, dass nichts sicher ist. Selbst das nicht.
Joachim Ringelnatz

erstellt am: 08. Apr. 2003 13:15    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 mapcar 10 Unities + Antwort hilfreich

Hi Axel,
klingt ja schon sehr umfangreich, was Du da vor hast. 
Vielleicht wären auch verschachtelte Blöcke und ihre Analyse ein Thema für Dich.
Und xrefs? Sind ja spätestens nach dem Binden auch nur Blöcke. Hier wäre vielleicht die (mögliche) Zuschneideumgrenzung des ehem. xrefs interressant.

Ansonsten freue ich mich schon auf das Thema!

------------------
www.cadditions.de

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

Geos
Mitglied
Vermessungstechniker i.R.


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

Beiträge: 1017
Registriert: 21.09.2001

ACAD Map 2010, Win 7 Pro
eigene Lisp's<P>HW: Core i7 860, 2.8 GHz
3.3 GB, NVIDIA GeForce GTS 250

erstellt am: 11. Apr. 2003 08:26    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 mapcar 10 Unities + Antwort hilfreich

Servus Axel

Mir ist doch noch was eingefallen:
Ich hab manchmal andere Zeichnungen (zB ein früherer Plan) als Block in meinen Zeichnungen und würde gern einzelne Objekte daraus durch Anklicken in meine neue Zeichnung übernehmen. Bei Linien, Kreisen etc. kein Problem - (nentsel) liefert mir ja die Daten. Fällt Dir auch was ein, wie man auch einen Block aus dem Block (der anderen Zeichnung) übernehmen kann?

Gruß, Ernst

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: 11. Apr. 2003 08:51    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 mapcar 10 Unities + Antwort hilfreich

Hallo Geos,

sicher könnte man dafür ein Lisp schreiben. Einfacher, und vor allem sofort, funktioniert das ja mit 'wblock'.

Bei Fragen ...

Grüße Holger

------------------
Holger Brischke
CADlon - Lisp over night!
Neue Tool's im Free-&Download
Zugang zum Download schon gesichert?

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

CADchup
Ehrenmitglied V.I.P. h.c.




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

Beiträge: 3329
Registriert: 14.03.2001

Sicher ist, dass nichts sicher ist. Selbst das nicht.
Joachim Ringelnatz

erstellt am: 11. Apr. 2003 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 mapcar 10 Unities + Antwort hilfreich

Hi Ernst,

dafür gibt's "Copy Nested Entities" in den Express Tools.
Oder meintest Du etwas anderes?

------------------
www.cadditions.de

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

Geos
Mitglied
Vermessungstechniker i.R.


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

Beiträge: 1017
Registriert: 21.09.2001

ACAD Map 2010, Win 7 Pro
eigene Lisp's<P>HW: Core i7 860, 2.8 GHz
3.3 GB, NVIDIA GeForce GTS 250

erstellt am: 14. Apr. 2003 12: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 Nur für mapcar 10 Unities + Antwort hilfreich


Zeichnung-neu.zip

 
Servus

@ Holger
WBLOCK? meinst Du "als WBLOCK speichern und in der neuen Zeichnung einfügen"?

@ CADchup
Copy Nested Entities kopiert keine kompletten Blocks, sondern nur die einzelnen Teile davon.

In der beigefügten "Zeichnung-neu.dwg" wurde die "Zeichnung-alt.dwg" als Block eingefügt und über die Punkte 1 und 2 eingepasst. Die "Zeichnung-alt" ist also geringfügig gedreht und skaliert. Sie enthält mehrere Linien und Blocks namens "GDK10" sowie einen Block "NORD2".
Jetzt würde ich gerne zB. den Punkt A anklicken um ein Duplikat (komplett mit Ringerl und Attributen) in die "Zeichnung-neu" zu übernehmen (oder den Nordpfeil oder eine Linie). Die Position sollte sich dabei nicht ändern.
Der Block "Zeichnung-alt" wird schließlich gelöscht. Punkt A sollte dann als Block "GDK10" in "Zeichnung-neu" verbleiben.

Gruß, Ernst

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

tappenbeck
Mitglied
Vermessungsingenieur


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

Beiträge: 1213
Registriert: 30.05.2002

AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net

erstellt am: 15. Apr. 2003 09: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 mapcar 10 Unities + Antwort hilfreich

hallo axel,

du suchst problem hier sind zwei:

1.) blöcke mit objektdaten/-sach und referenzen tauschen
eine möglichkeit auch blöcke so auszutauschen, das bestehende objektdaten/-sach bzw. referenzen auch auf den neuen block übertragen werden.

2.) blöcke verlieren attribute
es gibt manchmal das phänomäne dass blöcke die zugehörigen attribute (ich glaube das war der fall, wenn der alte block keine attribute hat und der neue welche enthält - bin mir aber nicht mehr ganz sicher) verlieren. füge ich nun diesen neuen block an einer neuen stelle in der zeichnung ein, dann hat dieser alle definierten attribute - nur der ausgetauschte block nicht.

jetzt suche ich einen weg den getauschten blöcken die attribute wieder zu verpassen.

vielleicht sind diese fragen für deine neue seiten interessant !

wie wird die dann eigentlich heißen und ab wann wird man sich mal auf die lauer legen können ??

gruß Jan :-)

------------------
jan :-)

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: 15. Apr. 2003 12:18    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 mapcar 10 Unities + Antwort hilfreich

@Geos,
Zitat:
Original erstellt von Geos:
@ Holger
WBLOCK? meinst Du "als WBLOCK speichern und in der neuen Zeichnung einfügen"?


Ja, das meine ich.

Grüße Holger

@Jan
zu 1)Wenn Du Datenbanken meinst, dann wird das, meiner Meinung nach, schierig, da ja eine eindeutige Zuordnung erfolgen muß. Diese wird meist durch die Object-ID (GC 5) gemacht. Wie du sicher weist, wird diese von AutoCAD vergeben und nicht beeinflußbar. Wenn die Zuordnung jedoch über etwas anderes gemacht wird, dann sehe ich da viele verschiedene Möglichkeiten, die in der Regel dann wieder so spezifisch sind, dass sich kein Allgemeintool dafür schreiben läßt.

2) Da mir kein Weg bisher bekannt ist, Attribute per Lisp zu einem eingefügten Block hinzuzufügen, außer den Block neu zu definieren, gehe ich meist folgenden, unterstützt durch ein Tool, Weg.
Das neue Blocklayout mit Attributen definieren(zeichnen) als Wblock mit dem Namen des eigentlich zu tauschenden Blockes abspeichern, und dann diesen Block überall dort einsetzen, wo der alte Block gefunden wird. Dieses Einsetzen und Austauschen erfolgt mit LISP - Beschreibung kannst Du Dir auf meinen Seiten (www.cadlon.de) im Download 3.letztes Programm BTAUSCH ansehen.
oder http://www.cadlon.de/Freedwnload/B_Tausch.pdf

Bin aber auch gespannt, ob und wenn wie eine Lösung für deine Probleme durch Axel ausschaut.

Bei Fragen ...

Grüße Holger

------------------
Holger Brischke
CADlon - Lisp over night!
Neue Tool's im Free-&Download
Zugang zum Download schon gesichert?

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

Geos
Mitglied
Vermessungstechniker i.R.


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

Beiträge: 1017
Registriert: 21.09.2001

ACAD Map 2010, Win 7 Pro
eigene Lisp's<P>HW: Core i7 860, 2.8 GHz
3.3 GB, NVIDIA GeForce GTS 250

erstellt am: 16. Apr. 2003 13:34    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 mapcar 10 Unities + Antwort hilfreich

Servus Axel

Hier habe ich noch einen Nachschlag zum Thema "Block im Block":
In der beigefügten Zeichnung befinden sich (außerhalb des Rechtecks) ein Text, ein INSERT mit 1 Attribut und ein INSERT mit 2 Attributen.
Das INSERT/die Zeichnung innerhalb des Rechtecks enthält auch wieder INSERTS mit Attributen.

Die nachfolgende Funktion kann durch Anklicken sowohl den Textwert, sowie die Attributwerte der INSERTS liefern, egal ob innerhalb oder außerhalb des Rechtecks (INSERTS).
Es gibt allerdings Schwächen:
Bei INSERTS mit 2 Attributen muß das 1. Attribut angeklickt werden. Die Funktion liest nur 2 Attribute.

(Ich weiß Axel, die Funktion ist noch nicht optimiert - weniger setq's, lokale Variablen, etc. )


(defun lesen ()
  (setq obj (entsel))
  (setq pickpkt (cadr obj))
  (setq elist (entget (car obj)))
  (cond
    ((= "TEXT" (cdr (assoc 0 elist)))
      (setq gstnr (cdr (assoc 1 elist)))
    )
    ((= "INSERT" (cdr (assoc 0 elist)))
      (setq elist (entget (car (nentselp pickpkt))))
      (cond
        ((= "TEXT" (cdr (assoc 0 elist)))
          (setq gstnr (cdr (assoc 1 elist)))
        )
        ((= "ATTRIB" (cdr (assoc 0 elist)))
          (setq gstnr (cdr (assoc 1 elist)))
          (setq elist (entget (entnext (cdr (assoc -1 elist)))))
          (if (= "ATTRIB" (cdr (assoc 0 elist)))
            (setq gstnr (strcat gstnr "/" (cdr (assoc 1 elist))))
          )
        )
      )
    )
    (T (princ (strcat "\nDu hast eine " (cdr (assoc 0 elist)) " angeklickt "))
      (setq gstnr nil)
    )
  )
  gstnr
)

Vielleicht hast Du eine Idee, wie man die Einschränkungen wegbekommt.

Gruß, Ernst

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: 16. Apr. 2003 15:01    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 mapcar 10 Unities + Antwort hilfreich

Hallo Geos,

wenn du den Wert des/der gepickten Textes/Attrib's haben möchtest, dann geh doch gleich mit nentsel drauf. Habe mal etwas code getippst, der eigentlich das machen sollte, was du möchtest. Habe das nur hier runter geschrieben, kann also sein, dass kleine Fehler drinnen sind bzgl. Klammern..?

Code:

(defun c :picktext ( / text)
  (while (not text)
    (princ "\nText oder Attribut wählen: ")
    (setq text (lesen))
    )
  (princ "\ngefundener Text:")
  (if (= (type text) 'STR)
    (princ text)
    (mapcar '(lambda (TX)
      (terpri)
      (princ TX)
      )
    (reverse text)
    )
    )
  (princ)
  )
(defun lesen ( / el etyp)
  (setq el (car(nentsel))
etyp (cdr(assoc 0 (entget el)))
)
  (cond
    ((= etyp "TEXT")
    (cdr(assoc 1 (entget el)))
    )
    ((= etyp "ATTRIB")
    (get_attribwerte (cdr(assoc 330 (entget el))))
    )
    )
  )
(defun get_attribwerte (att / attwli)
  (while (/= "SEQEND" (cdr(assoc 0 (entget(setq att (entnext att))))))
    (setq attwli (cons (cdr(assoc 1 (entget att)))attwli))
    )
  )

Bei Fragen ...

Grüße Holger

------------------
Holger Brischke
CADlon - Lisp over night!
Neue Tool's im Free-&Download
Zugang zum Download schon gesichert?

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

tappenbeck
Mitglied
Vermessungsingenieur


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

Beiträge: 1213
Registriert: 30.05.2002

AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net

erstellt am: 17. Apr. 2003 15: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 mapcar 10 Unities + Antwort hilfreich

noch ein osterei aus hamburg:

ermitteln aller vorkommenden attribute auf basis eines blocknamen(filters - * ist zugelassen)

du wirst sicherlich eine kürzere version erstellen als ich - meine oster aufgabe !

gruß Jan :-)

------------------
jan :-)

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



Praktikum im Bereich Production Process Development

Werden Sie Teil unserer viel­fältigen Teams, die aus leiden­schaftlich engagierten Mitarbeitern bestehen und wählen Sie einen Karriere­weg, der es Ihnen ermöglicht, sich sowohl persönlich als auch beruflich weiter­zuent­wickeln. Wir bei Getinge engagieren uns dafür, dass jeder Mensch und jede Gemeinschaft Zugang zur bestmöglichen Gesund­heits­ver­sorgung hat. Wir bieten Kranken­häusern und Life-Science-Einrich­tungen ...

Anzeige ansehenProzessmanagement
Geos
Mitglied
Vermessungstechniker i.R.


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

Beiträge: 1017
Registriert: 21.09.2001

ACAD Map 2010, Win 7 Pro
eigene Lisp's<P>HW: Core i7 860, 2.8 GHz
3.3 GB, NVIDIA GeForce GTS 250

erstellt am: 18. Apr. 2003 08:01    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 mapcar 10 Unities + Antwort hilfreich

Hallo

@Holger

Dein PICKTEXT is' es. Ich wußte nicht, dass der Weg über GK 330 zum Ziel führt.

Danke

@Axel
Bin schon neugierig auf Deine Seiten

Gruß, Ernst

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