Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Blockhuckepack

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:  Blockhuckepack (1526 mal gelesen)
cadoc
Mitglied



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

Beiträge: 28
Registriert: 23.08.2018

erstellt am: 06. Nov. 2018 11:41    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,
suche Hilfe für mehrfaches Verschieben von Blöcken.
Ich habe das OBJROT.lsp von CADmium dahingehend angepasst,
dass es einen Block auf einen anderen Block schiebt.
Funktioniert soweit gut und erspart das saubere Picken der Griffe.
Bei Hunderten zu verschiebenden Blöcken bleibt es aber weiterhin mühselig, da alles geklickt werden muss.

Toll wäre eine Erweiterung wie folgt.
Alle zu verschiebenden Blöcke, mit dem Namen A, sollen auf den nächstgelegenen Block, mit dem Namen B, geschoben werden.


(defun C:OBJMOV (/ OBJ M)
  (if(and(setq OBJ(car(entsel "\nObjektziel wählen: ")))
        (setq OBJ(vlax-ename->vla-object OBJ))
        (or(not(vl-catch-all-error-p(setq M(vl-catch-all-apply 'vla-get-InsertionPoint (list OBJ)))))
            (prompt "\n Basiskoordinaten nicht auslesbar .. ")
        )
    ) 
    (while(setq OBJ (car (entsel "\nzu verschiebendes Objekt wählen: ")))
      (and(setq OBJ(vlax-ename->vla-object OBJ))
          (or(not(vl-catch-all-error-p(vl-catch-all-apply 'vla-put-InsertionPoint (list OBJ M))))
            (prompt "\n Objekt nicht verschiebbar .. ")
          )
      )
    )   
  )
  (princ)
)


Danke & Gruß
GAP

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

CADwiesel
Moderator
CAD4FM UG




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

Beiträge: 1968
Registriert: 05.09.2000

AutoCAD, Bricscad
Wir machen das Mögliche unmöglich

erstellt am: 06. Nov. 2018 12: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 Nur für cadoc 10 Unities + Antwort hilfreich

...hat sicher keiner rumliegen. Musst du dir also sicher selber stricken so ein Dingsbums
du musst erstmal für dich rausfinden, wie du 'den nächstgelegenen Block' identifizierst.
Wenn du in etwa weisst wie weit so ein 'nächstgelegener' Block weg von einem Ausgangs Objekt liegt, könntest du mit einem ssget Auswahlsatz um den Ausgangsblock mit entsprechender Suchbox fischen und dann eine Aktion lostreten.

OBJROT hört sich aber nach rotieren und nicht verschieben an. Ob das der richtige Ansatz ist?

------------------
Gruß
CADwiesel
Besucht uns im CHAT

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

cadoc
Mitglied



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

Beiträge: 28
Registriert: 23.08.2018

erstellt am: 06. Nov. 2018 13:43    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 für die Rückmeldung.
Überlegungen gibt es schon:

Abfrage für Auswahlbereich
Auswahlbereich festlegen
Auswahl eines Zielblocks um den Namen der B Blöcke zu erhalten
Auswahl eines Verschiebeblocks um den Namen der A Blöcke zu erhalten
Erstelle Liste A von n Blöcken mit Namen A
Erstelle Liste B von n Blöcken mit Namen B

  Nimm ersten Block A aus Liste A
  Rechne die Abstände der Einfügepunkte (aus Koordinaten X,Y) zu allen Blöcken B aus Liste B
  Merke jenen Block B mit dem kürzesten Abstand zum ersten Block A
      (Berechnung des ersten Abstands von Block A zu Block B, nächste Berechnung,
      wenn Abstand länger als erste Berechnung mit Block B dann vergessen, wenn Abstand kürzer
      dann ist der Wert aktueller neuer kürzester Abstand, weiter bis alle durchgerechnet sind)
  Übergib den Einfügepunkt des selektierten Blocks B an ersten Block A
  Verschiebe ersten Block A (oder merke und verschiebe alle Blöcke A gesammelt am Ende?)

  Nimm zweiten Block A aus Liste A
  Rechne die Abstände der Einfügepunkte (aus Koordinaten X,Y) zu allen (restlichen?) Blöcken B aus Liste B
  Merke den Block B mit dem kürzesten Abstand zum zweiten Block A
      (Berechnung des ersten Abstands von Block A zu Block B, nächste Berechnung,
      wenn Abstand länger als erste Berechnung mit Block B dann vergessen, wenn Abstand kürzer
      dann ist der Wert aktueller neuer kürzester Abstand, weiter bis alle durchgerechnet sind)
  Übergib den Einfügepunkt des selektierten Blocks B an zweiten Block A
  Verschiebe zweiten Block A (oder merke und verschiebe alle Blöcke A gesammelt am Ende?)

  usw.

So in etwa? Tut mir leid, aber das liegt außerhalb meiner Lisp-Möglichkeiten.

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

Vino
Mitglied



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

Beiträge: 207
Registriert: 24.05.2005

Windows 10
BricsCAD V20-22

erstellt am: 06. Nov. 2018 16:08    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 cadoc 10 Unities + Antwort hilfreich

Hallo,

Nur so als Denkanstoß...

Vielleicht verstehe ich auch deine Aufgabe falsch, aber eventuell ist das auch die Lösung für dein Problem?:
1) Kopiere alle Blockreferenzen Block B
2) Referenziere mit den kopierten Referenzen statt auf Block B auf Block A (GK 2)

Wenn du weniger Blockreferenzen A als B hast, wird das Ergebnis nicht deinem beschriebenen Wunsch entsprechen, aber was wäre denn dein Wunsch, wenn es mehr Referenzen A als B gibt?

Zitat:
Rechne die Abstände der Einfügepunkte (aus Koordinaten X,Y) zu allen (restlichen?) Blöcken B aus Liste B

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

Andreas Kraus
Mitglied
Elektrotechniker


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

Beiträge: 1356
Registriert: 11.01.2006

WIN 10
ACAD 2022

erstellt am: 06. Nov. 2018 17: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 cadoc 10 Unities + Antwort hilfreich

Hallo cadoc,
das ist eigentlich recht einfach aber eine frage hab ich noch:

Wenn ein B zufällig der nächste Block zu zwei As ist dann liegen am Ende die zwei As übereinander und en anderes B hat kein A.
Kann man das so ausdrücken ???

Sollte nicht vielleicht erst mal von allen As zu allen Bs eine Abstandsliste erzeugt und so verarbeitet werden dass nur jeweils ein A zu einem B kommt ?
Vielleicht sowas wie: Kürzeste Abstände zuerst und die Elemente dann nicht nochmal verarbeiten.

Wenn dir das so gefallen würde dann wäre es das hier (A anklicken für Name, As wählen, B anklicken):
Ist noch ohne Kosmetik. Geht schöner aber funzt erst mal.

Code:
(defun c:blockhuckepack (/        DATA      DATA_LIST
ENT1_DATA     ENT1_DATALIST ENT1_NAME
ENT2_DATA     ENT2_DATALIST ENT2_NAME
ENT_NAME      SATZ
)
  (vl-load-com)
  (defun k_satz->entlist (satz)
;;; Elementliste aus Auswahlsatz erstellen
    (if (= (type satz) 'PICKSET)
      (vl-remove-if-not
'(lambda (dummy) (= (type dummy) 'ENAME))
(mapcar 'cadr (ssnamex satz))
      )
    )
  )

  (defun k_->obj_name (name)
;;; VLA-OBJECT zurückgeben
    (cond
      ((= (type name) 'ENAME)
       (vlax-ename->vla-object name)
      )
      ((= (type name) 'VLA-OBJECT)
       name
      )
      ((= (type name) 'STRING)
       (vlax-ename->vla-object (handent name))
      )
      ((= (type name) 'LIST)
       (vlax-ename->vla-object (cdr (assoc -1 name)))
      )
    )
  )

  (defun k_->ent_name (name)
;;; Elementname zurückgeben
    (cond
      ((= (type name) 'ENAME)
       name
      )
      ((= (type name) 'VLA-OBJECT)
       (vlax-vla-object->ename name)
      )
      ((= (type name) 'STRING)
       (handent name)
      )
      ((= (type name) 'LIST)
       (cdr (assoc -1 name))
      )
    )
  )

  (defun k_entlist->satz (ent_list / n satz ent_name)
;;; Auswahlsatz aus Elementliste erstellen
    (if (listp ent_list)
      (progn
(setq satz (ssadd))
(mapcar
  '(lambda (ent_name)
     (cond
       ((= (type ent_name) 'VLA-OBJECT)
(setq
  satz (ssadd (vlax-vla-object->ename ent_name) satz)
)
       )
       ((= (type ent_name) 'ename)
(setq satz (ssadd ent_name satz))
       )
       ((= (type ent_name) 'str)
(if (handent ent_name)
  (setq satz (ssadd (handent ent_name) satz))
)
       )
     )
   )
  ent_list
)
      )
    )
    satz
  )

  (if (setq ent1_name (car (entsel)))
    (if (= (cdr (assoc 0 (setq ent1_data (entget ent1_name))))
   "INSERT"
)
      (progn
(setq ent1_datalist
    (mapcar
      'entget
      (k_satz->entlist
(ssget
  (list '(0 . "INSERT") (assoc 2 ent1_data))
)
      )
    )
      ent2_name     (car (entsel))
      ent2_datalist
    (mapcar 'entget
    (k_satz->entlist
      (ssget "x"
     (list '(0 . "INSERT")
   (assoc 2 (entget ent2_name))
     )
      )
    )
    )
      data_list
    (vl-sort
      (apply
'append
(mapcar
  '(lambda (ent1_data)
     (mapcar
       '(lambda (ent2_data)
  (list (distance (cdr (assoc 10 ent1_data))
  (cdr (assoc 10 ent2_data))
)
ent1_data
ent2_data
  )
)
       ent2_datalist
     )
   )
  ent1_datalist
)
      )
      '(lambda (data1 data2) (< (car data1) (car data2)))
    )
)
(while data_list
  (setq data       (car data_list)
data_list     (vl-remove-if
'(lambda (dummy)
   (or (equal (cadr dummy) (cadr data))
       (equal (cadr dummy) (caddr data))
       (equal (caddr dummy) (cadr data))
       (equal (caddr dummy) (caddr data))
   )
)
data_list
      )
ent1_datalist
      (vl-remove-if
'(lambda (dummy)
   (or (equal dummy (cadr data))
       (equal dummy (caddr data))
   )
)
ent1_datalist
      )
  )
  (vla-put-insertionpoint
    (k_->obj_name (cdr (assoc -1 (cadr data))))
    (vla-get-insertionpoint
      (k_->obj_name (cdr (assoc -1 (caddr data))))
    )
  )
)
(if ent1_datalist
  (progn
    (setq satz
   (k_entlist->satz (mapcar 'k_->ent_name ent1_datalist))
    )
    (sssetfirst satz satz)
    (alert
      (strcat
"für "
(itoa (sslength satz))
" Objekt(e) keine Ziele gefunden\rObjekte sind markiert"
      )
    )
  )
)
      )
    )
  )
)


------------------
Geht nicht, gibts nicht

Gruß
Andreas

http://kraus-cad.de

[Diese Nachricht wurde von Andreas Kraus am 06. Nov. 2018 editiert.]

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

cadoc
Mitglied



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

Beiträge: 28
Registriert: 23.08.2018

erstellt am: 07. Nov. 2018 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

Wow!  Ist ja mächtig. Nur versteh ichs noch nicht ganz.
Was wird in welcher Reihenfolge geklickt?

Vielleicht noch zur näheren Erklärung.
In 99% der Fälle gibt es mehr (Verschiebe-) A-Blöcke als (Ziel-) B-Blöcke.
Beide besitzen viele unterschiedliche Attribute, Tags und Inhalte.
Das bedeutet aber auch, dass einige A-Blöcke übrig bleiben und nicht verschoben werden sollten,
wenn alle B-Blöcke schon verbraucht sind.
Ob man diese "Untouchables" kennzeichnen sollte/könnte?

Der zweite Schritt wäre dann ja noch von Block B das B_Attribut_1 in z.B. das A_Attribut_3 von Block A hinüberzuschaufeln,
vorausgesetzt sie haben den gleichen Einfügepunkt, also Huckepack ;-).
Aber damit wollte ich euch nicht schon am Anfang verscheuchen.

Derzeit mache ich das auch einzeln mit der TTC.lsp.

;; ==================================================================== ;;
;;                                                                      ;;
;;  TTC.LSP - The program copies the text from: DText, MText,          ;;
;;            Tables, Dimensions, Attributes, Attributes,              ;;
;;            Attributes Definitions, DText, MText and inner            ;;
;;            block's DText and MText to: DText, MText, Tables,        ;;
;;            Attribures and Attributes Definitions. There are          ;;
;;            Multiple and Pair-wise modes.                            ;;
;;                                                                      ;;
;; ==================================================================== ;;
;;                                                                      ;;
;;  Command(s) to call: TTC                                            ;;
;;                                                                      ;;
;; ==================================================================== ;;
;;                                                                      ;;
;;  THIS PROGRAM AND PARTS OF IT MAY REPRODUCED BY ANY METHOD ON ANY    ;;
;;  MEDIUM FOR ANY REASON. YOU CAN USE OR MODIFY THIS PROGRAM OR        ;;
;;  PARTS OF IT ABSOLUTELY FREE.                                        ;;
;;                                                                      ;;
;;  THIS PROGRAM PROVIDES 'AS IS' WITH ALL FAULTS AND SPECIFICALLY      ;;
;;  DISCLAIMS ANY IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS        ;;
;;  FOR A PARTICULAR USE.                                              ;;
;;                                                                      ;;
;; ==================================================================== ;;
;;                                                                      ;;
;;  V1.3, 29 November, 2005, Riga, Latvia                              ;;
;;  © Aleksandr Smirnov (ASMI)                                          ;;
;;  For AutoCAD 2000 - 2008 (isn't tested in a next versions)          ;;
;;                                                                      ;;
;;                            http://www.asmitools.com                ;;
;;                                                                      ;;
;; ==================================================================== ;;

(defun c:ttc (/ actDoc vlaObj sObj sText curObj oldForm
                oType oldMode conFlag errFlag *error*)

  (vl-load-com)

      (setq actDoc(vla-get-ActiveDocument
        (vlax-get-acad-object)))
          (vla-StartUndoMark actDoc)

  (defun TTC_Paste(pasteStr / nslLst vlaObj hitPt
                  hitRes Row Column)
    (setq errFlag nil)
    (if
    (setq nslLst(nentsel "\nPaste text >"))
      (progn
        (cond
          ((and
            (= 4(length nslLst))
            (= "DIMENSION"(cdr(assoc 0(entget(car(last nslLst))))))
            ); end and
            (setq vlaObj(vlax-ename->vla-object
                (cdr(assoc -1(entget(car(last nslLst)))))))
          (if
            (vl-catch-all-error-p
              (vl-catch-all-apply
                'vla-put-TextOverride(list vlaObj pasteStr)))
                  (progn
                    (princ "\n<!> Can't paste. Object may be on locked layer <!> ")
                    (setq errFlag T)
                    ); end progn
            ); end if
          ); end condition #1
          ((and
            (= 4(length nslLst))
            (= "ACAD_TABLE"(cdr(assoc 0(entget(car(last nslLst))))))
            ); end and
            (setq vlaObj
              (vlax-ename->vla-object
                (cdr(assoc -1(entget(car(last nslLst))))))
                  hitPt(vlax-3D-Point(trans(cadr nslLst)1 0))
                  hitRes(vla-HitTest vlaObj hitPt
                        (vlax-3D-Point '(0.0 0.0 1.0)) 'Row 'Column)
            ); end setq
            (if(= :vlax-true hitRes)
            (progn
              (if(vl-catch-all-error-p
                    (vl-catch-all-apply
                      'vla-SetText(list vlaObj Row Column pasteStr)))
            (progn
              (princ "\n<!> Can't paste. Object may be on locked layer <!> ")
              (setq errFlag T)
              ); end progn
              ); end if
            ); end progn
            ); end if
          ); end condition # 2
          ((and
              (= 4(length nslLst))
              (= "INSERT"(cdr(assoc 0(entget(car(last nslLst))))))
          ); end and
            (princ "\n<!> Can't paste to block's DText or MText <!> ")
            (setq errFlag T)
            ); end condition #3
        ((and
            (= 2(length nslLst))
            (member(cdr(assoc 0(entget(car nslLst))))
            '("TEXT" "MTEXT" "ATTRIB" "ATTDEF"))
          ); end and
        (setq vlaObj(vlax-ename->vla-object(car nslLst)))
        (if(vl-catch-all-error-p
            (vl-catch-all-apply
              'vla-put-TextString(list vlaObj pasteStr)))
            (progn
              (princ "\n<!> Error. Can't pase text <!> ")
              (setq errFlag T)
            ); end progn
            ); end if
          ); end condition #4
        (T
          (princ "\n<!> Can't paste. Invalid object <!> ")
          (setq errFlag T)
        ); end condition #5
        ); end cond
              T
      ); end progn
            nil
            ); end if
    ); end of TTC_Paste


    (defun TTC_MText_Clear(Mtext / Text Str)
      (setq Text "")
      (while(/= Mtext "")
        (cond
          ((wcmatch(strcase
          (setq Str
            (substr Mtext 1 2)))"\\[\\{}`~]")
            (setq Mtext(substr Mtext 3)
              Text(strcat Text Str)
              ); end setq
          ); end condition #1
        ((wcmatch(substr Mtext 1 1) "[{}]")
          (setq Mtext
          (substr Mtext 2))
          ); end condition #2
        ((and
          (wcmatch
          (strcase
            (substr Mtext 1 2)) "\\P")
              (/=(substr Mtext 3 1) " ")
          ); end and
        (setq Mtext (substr Mtext 3)
              Text (strcat Text " ")
              ); end setq
          ); end condition #3
        ((wcmatch
          (strcase
            (substr Mtext 1 2)) "\\[LOP]")
            (setq Mtext(substr Mtext 3))
          ); end condition #4
        ((wcmatch
          (strcase
            (substr Mtext 1 2)) "\\[ACFHQTW]")
          (setq Mtext
            (substr Mtext
            (+ 2(vl-string-search ";" Mtext))))
          ); end condition #5
        ((wcmatch
          (strcase (substr Mtext 1 2)) "\\S")
            (setq Str(substr Mtext 3 (- (vl-string-search ";" Mtext) 2))
                  Text(strcat Text (vl-string-translate "#^\\" " " Str))
                  Mtext(substr Mtext (+ 4 (strlen Str)))
              ); end setq
            (print Str)
          ); end condition #6
        (T(setq Text(strcat Text(substr Mtext 1 1))
                Mtext (substr Mtext 2)
                ); end setq
        ); end condition #7
      ); end cond
    ); end while
  Text
); end of TTC_MText_Clear


  (defun TTC_Copy (/ sObj sText tType actDoc)
  (if
    (and
    (setq sObj(car(nentsel "\nCopy text... ")))
    (member(setq tType(cdr(assoc 0(entget sObj))))
      '("TEXT" "MTEXT" "ATTRIB" "ATTDEF"))
    ); end and
    (progn
      (setq actDoc(vla-get-ActiveDocument
        (vlax-get-Acad-object))
            sText(vla-get-TextString
      (vlax-ename->vla-object sObj))
      ); end setq
      (if(= tType "MTEXT")
        (setq sText(TTC_MText_Clear sText))
        ); end if
      ); end progn
    ); end if
    sText
    ); end of TTC_Copy

  (defun CCT_Str_Echo(paseStr / comStr)
    (if(< 20(strlen paseStr))
      (setq comStr
      (strcat
        (substr paseStr 1 17)"..."))
      (setq comStr paseStr)
      ); end if
    (princ(strcat "\nText = \"" comStr "\""))
    (princ)
    ); end of CCT_Str_Echo

    (defun *error*(msg)
    (vla-EndUndoMark
      (vla-get-ActiveDocument
        (vlax-get-acad-object)))
    (princ "\nQuit TTC")
    (princ)
    ); end of *error*

    (if(not ttc:Mode)(setq ttc:Mode "Multiple"))
    (initget "Multiple Pair-wise")
    (setq oldMode ttc:Mode
          ttc:Mode(getkword
                    (strcat "\nSpecify mode [Multiple/Pair-wise] <"ttc:Mode">: "))
          conFlag T
          paseStr ""
          ); end setq
    (if(null ttc:Mode)(setq ttc:Mode oldMode))
    (if(= ttc:Mode "Multiple")
      (progn
        (if(and(setq paseStr(TTC_Copy))conFlag)
        (progn
          (CCT_Str_Echo paseStr)
        (while(setq conFlag(TTC_Paste paseStr))T
            ); end while
        ); end progn
      ); end if
    ); end progn
      (progn
        (while(and conFlag paseStr)
          (setq paseStr(TTC_Copy))
            (if(and paseStr conFlag)
              (progn
              (CCT_Str_Echo paseStr)
                (setq errFlag T)
                  (while errFlag
                    (setq conFlag(TTC_Paste paseStr))
                );end while
              ); end progn
            ); end if
          ); end while
        ); end progn
      ); end if
  (vla-EndUndoMark actDoc)
  (princ "\nQuit TTC")
  (princ)
  ); end c:ttc

(princ "\n[Info] http:\\\\www.AsmiTools.com [Info]")
(princ "\n[Info] Type TTC to run text to text copy tool [Info]")


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

Andreas Kraus
Mitglied
Elektrotechniker


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

Beiträge: 1356
Registriert: 11.01.2006

WIN 10
ACAD 2022

erstellt am: 07. Nov. 2018 10:09    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 cadoc 10 Unities + Antwort hilfreich

Hallo cadoc,
Zitat:
Was wird in welcher Reihenfolge geklickt?

Klick auf einen A-Block (um den Namen zu erhalten)
wählen der A-Blöcke (welche sollen verschoben werden)
Klick auf einen B-Block (damit der nächste passende Block gesucht werden kann)

Übriggebliebene A-Blöcke werden markiert.
Das wars ... viel Spass damit 

Die TTC-LSP schau ich mir nachher mal an. Kenn ich noch nicht.
Mal sehn was du vorhast. Ich bin ja soooo gespannt 

------------------
Geht nicht, gibts nicht

Gruß
Andreas

http://kraus-cad.de

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

cadoc
Mitglied



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

Beiträge: 28
Registriert: 23.08.2018

erstellt am: 07. Nov. 2018 10: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

Hallo Andreas,
leider funktioniert das Lisp irgendwie nicht so ganz bei mir (Acad Map 2017).
Bekomme immer ein "nil".

Wozu das Ganze?
A-Blöcke repräsentieren digitalisierte Objekte mit vielen Attributen die noch ihre richtige Lage suchen.
B-Blöcke sind vermessene Punkte, davon haben aber nicht alle immer eine/die richtige Bezeichnung
(deswegen die Identifikation mit dem nächstgelegenen B-Block) und es werden auch nicht immer alle Objekte in der Natur gefunden
(deswegen bleiben immer ein paar A-Blöcke übrig).
Beim Einfügen neuer Teilvermessungen könnte der ganze Vorgang problemlos oft wiederholt werden.
Ausschließen müßte man vielleicht noch den " Tandem-Huckepack "

soweit
LG & Besten Dank

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. Nov. 2018 10: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 cadoc 10 Unities + Antwort hilfreich

Hallo cadoc,

kannst du mal die Aufgabenstellung mit Worten aus der realen Welt beschreiben. Ich meine:
- was ist tatsächlich gegeben?
- wie soll das Ergebnis aussehen?
- über welche realen Eigenschaften kann ein Zusammenhang der realen Objekte hergestellt werden?

Ich denke, dass es Sinn macht, deinen Lösungsansatz zu hinterfragen, vielleicht auch anzupassen.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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

Andreas Kraus
Mitglied
Elektrotechniker


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

Beiträge: 1356
Registriert: 11.01.2006

WIN 10
ACAD 2022

erstellt am: 07. Nov. 2018 10:58    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 cadoc 10 Unities + Antwort hilfreich

Du bekommst ein nil 
Ich hoffe ich hab alle weiteren benötigten Module reingepackt und keins vergessen.

Bekommst du denn nur ein nil oder steht da sonst noch was ?

Ich kann auch TeamViewer anbieten wenn du das darfst.

------------------
Geht nicht, gibts nicht

Gruß
Andreas

http://kraus-cad.de

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

cadoc
Mitglied



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

Beiträge: 28
Registriert: 23.08.2018

erstellt am: 07. Nov. 2018 10:58    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 Holger,
siehe eins drüber. Mehr is nicht.

LG

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

cadoc
Mitglied



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

Beiträge: 28
Registriert: 23.08.2018

erstellt am: 07. Nov. 2018 11:09    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

Klick auf einen A-Block (um den Namen zu erhalten)
OK
wählen der A-Blöcke (welche sollen verschoben werden)
OK - Eigentlich immer alle
Klick auf einen B-Block (damit der nächste passende Block gesucht werden kann)
OK
Objekte wählen: 0 gefunden, 0 gesamt

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. Nov. 2018 11: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 cadoc 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von cadoc:
Hallo Holger,
siehe eins drüber. Mehr is nicht.

LG 


Woher kommen die digitalisierten Objekte?
Woraus entstehen die A-Blöcke, die die digitalisierten Objekte darstellen?

Woher kommen die vermessenen Punkte?
Woraus entstehen B-Blöcke, die die vermessenen Punkte darstellen?

Wie gelangen die Objekte aus der realen Welt in die CAD-Welt?
Was stellen die A-Blöcke dar? Welche fachlichen Zusammenhänge gibt es - lassen sich darüber Verbindungen zwischen A-und B-Block herstellen?

Sorry, ich erlebe zu oft, dass mir in sich schlüssig erscheinende Teillösungen präsentiert werden, der schon ein fester Lösungsweg zugrunde liegt. Das versperrt oftmals die Sicht auf andere Lösungsansätze. Diese kann man aber nur entwickeln, wenn die übergeordnete Aufgabenstellung bekannt und frei von technischen Detail-Lösungsansätzen formuliert wird. Gerade Entwickler hangeln sich an Lösungsansätzen entlang, die durch die ihnen bekannten möglichen Teillösungen geprägt sind. Ich selbst spreche mich davon auch nicht frei. In der Community sind aber viele Entwickler, die in Summe über einen großen Erfahrungsschatz von Teillösungen verfügen und darauf basierend auch verschiedene Lösungswege vorschlagen könn(t)en.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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

cadoc
Mitglied



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

Beiträge: 28
Registriert: 23.08.2018

erstellt am: 07. Nov. 2018 11:52    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

Ist mir schon klar was du meinst. Versuche es nochmal zu erklären.

Woher kommen die digitalisierten Objekte?
    Alle digitalisierten Objekte (1000+)  = A-Block mit ca. 90 Attributen, werden händisch gesetzt und befüllt.
    So ein Objekt kann/könnte alles mögliche sein vom Abfalleimer bis Zooeingang.
    Dateneingabe erfolgt teils in in der grafischen Oberfläche im Eigenschaftsfenster, teils mit attout - attin über Excel.
Woraus entstehen die A-Blöcke, die die digitalisierten Objekte darstellen?
    Aus einem Kreis und den ~ 90 Attributen.
Woher kommen die vermessenen Punkte?
    Vom Vermesser dem ich die Eingabe der Bezeichnung ersparen will, bzw. der nicht immer über die aktuellen verfügt.
Woraus entstehen B-Blöcke, die die vermessenen Punkte darstellen?
    Die Vermessungsblöcke bestehen ebenfalls aus einem Kreis und ~ 5 Attributen
Wie gelangen die Objekte aus der realen Welt in die CAD-Welt?
    Der Vermesser übergibt mir eine dwg mit seinen Vermessungspunkten = B-Block
Was stellen die A-Blöcke dar? Welche fachlichen Zusammenhänge gibt es - lassen sich darüber Verbindungen zwischen A-und B-Block herstellen?
    A-Blöcke sind letztlich Datencontainer in der dwg die mir schlußendlich auch eine korrekte Lageinformation geben sollen.
    Die Beziehung soll über den (nächsliegenden) Einfügepunkt des B-Blocks hergestellt werden (wie im ersten Beitrag beschrieben).

    Ziel ist die erhaltene nun genau Lageinformation, ohne auf eine Bezeichnung oder sonstiges zurückgreifen zu müssen, an meine Blöcke zu übergeben.

Hilft das weiter?
LG


Zitat:
Original erstellt von Brischke:

Woher kommen die digitalisierten Objekte?
Woraus entstehen die A-Blöcke, die die digitalisierten Objekte darstellen?

Woher kommen die vermessenen Punkte?
Woraus entstehen B-Blöcke, die die vermessenen Punkte darstellen?

Wie gelangen die Objekte aus der realen Welt in die CAD-Welt?
Was stellen die A-Blöcke dar? Welche fachlichen Zusammenhänge gibt es - lassen sich darüber Verbindungen zwischen A-und B-Block herstellen?

Sorry, ich erlebe zu oft, dass mir in sich schlüssig erscheinende Teillösungen präsentiert werden, der schon ein fester Lösungsweg zugrunde liegt. Das versperrt oftmals die Sicht auf andere Lösungsansätze. Diese kann man aber nur entwickeln, wenn die übergeordnete Aufgabenstellung bekannt und frei von technischen Detail-Lösungsansätzen formuliert wird. Gerade Entwickler hangeln sich an Lösungsansätzen entlang, die durch die ihnen bekannten möglichen Teillösungen geprägt sind. Ich selbst spreche mich davon auch nicht frei. In der Community sind aber viele Entwickler, die in Summe über einen großen Erfahrungsschatz von Teillösungen verfügen und darauf basierend auch verschiedene Lösungswege vorschlagen könn(t)en.

Grüße!
Holger



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

Andreas Kraus
Mitglied
Elektrotechniker


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

Beiträge: 1356
Registriert: 11.01.2006

WIN 10
ACAD 2022

erstellt am: 07. Nov. 2018 12:07    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 cadoc 10 Unities + Antwort hilfreich

Hm...
stell doch mal ne Beispiel-DWG hier rein.
Vielleicht gehts hier um unbenannte Blöcke, dann ist das mit dem Namen natürlich nix. Da muss man anders ran.

------------------
Geht nicht, gibts nicht

Gruß
Andreas

http://kraus-cad.de

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. Nov. 2018 12: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 cadoc 10 Unities + Antwort hilfreich

... hilft nicht weiter, da du den Anfang, das Entstehen der Daten nicht beschrieben hast. Es fehlt auch die Ursache, weshalb diese Zuordnung von A- und B-Block fehlt - du schreibst nur, dass diese fehlt.

Ich sehe das bisher wie folgt: Der Weg nur über die Entfernung der Objekte kann niemals eindeutig sein. Sobald eine automatisierte Lösung nicht 100&ig sichere Ergebnisse liefert, ist eine manuelle Prüfung erforderlich - den Aufwand für die Programmierung kann man sich sparen.
Es braucht mindestens irgendeinen 2. Zusammenhang, um eine Eindeutigkeit herstellen zu können. Mit meinen Fragen bin ich auf der Suche danach - deine Infos genügen dafür allerdings nicht. Oder es gibt keinen weiteren Zusammenhang, dann gibt es eben auch keine Lösung - es gibt nicht für alles eine programmierbare Lösung.

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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

cadoc
Mitglied



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

Beiträge: 28
Registriert: 23.08.2018

erstellt am: 07. Nov. 2018 12: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


Test.dwg

 
Eine abgespeckte Version davon.

Zitat:
Original erstellt von Andreas Kraus:
Hm...
stell doch mal ne Beispiel-DWG hier rein.
Vielleicht gehts hier um unbenannte Blöcke, dann ist das mit dem Namen natürlich nix. Da muss man anders ran.


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

cadoc
Mitglied



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

Beiträge: 28
Registriert: 23.08.2018

erstellt am: 07. Nov. 2018 12:52    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

... hilft nicht weiter, da du den Anfang, das Entstehen der Daten nicht beschrieben hast. Es fehlt auch die Ursache, weshalb diese Zuordnung von A- und B-Block fehlt - du schreibst nur, dass diese fehlt.
-----
    Wenn ich zum Beispiel einen Kataster erstelle, sagen wir von Leitpflöcken. Ich kenne die Orte wo sie vor 10 Jahren
    gesetzt wurden, annähernd. Trage sie in den Plan ein. Manche gibt es noch, manche nicht, manche sind neu.
    Zu erwarten ist, dass es in der Natur weniger gibt als angenommen.
    Σ Digitalisierte A-Blöcke > Σ Vermessungs B-Blöcke
-----
Ich sehe das bisher wie folgt: Der Weg nur über die Entfernung der Objekte kann niemals eindeutig sein. Sobald eine automatisierte Lösung nicht 100&ig sichere Ergebnisse liefert, ist eine manuelle Prüfung erforderlich - den Aufwand für die Programmierung kann man sich sparen.
-----
    Auf die Bezeichnung will ich mich ebenfalls nicht 100% verlassen.
    Eine abschließende manuelle/optische Prüfung ist dabei immer notwendig.
    -----
Es braucht mindestens irgendeinen 2. Zusammenhang, um eine Eindeutigkeit herstellen zu können. Mit meinen Fragen bin ich auf der Suche danach - deine Infos genügen dafür allerdings nicht. Oder es gibt keinen weiteren Zusammenhang, dann gibt es eben auch keine Lösung - es gibt nicht für alles eine programmierbare Lösung.
-----
    OK, will nicht, dass ihr gaue Haare bekommt
-----


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. Nov. 2018 13:10    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 cadoc 10 Unities + Antwort hilfreich

... wenn ich es nun richtig verstehe, dann geht jemand raus und erzeugt  irgendwelche Messpunkte, ohne dass von diesen am Ende bekannt ist, was dieser Messpunkt zum Inhalt hat - richtig?
Falls dem so ist, dann gibt es keine Lösung. Dann kann es immer passieren, dass der Mülleimer vorm Zoo eindeutig dem nächstgelegenen Leitpfosten der 10km entfernten Landstraße zugeordnet wird.


Nicht dass wir uns hier falsch verstehen. Es würde schon genügen, wenn in der Messpunkt-DWG nur Leitpfosten enthalten sind. Das wäre die 2. Information die es braucht, um eine eindeutige Zuordnung oder eben eine Eindeutige Nichtzuordnung feststellen zu können.
Soll heißen: Entstehen die Daten qualifiziert, ohne dass die Qualifizierung an irgendeiner Stelle vermerkt ist, dann muss der Workflow beschrieben sein, und das Programm kann saubere Ergebnisse liefern.

Zitat:
Original erstellt von cadoc:
...OK, will nicht, dass ihr gaue Haare bekommt 

Darauf hast du keinen Einfluß mehr. Meine Haare sind schon grau. ;-)

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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

cadoc
Mitglied



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

Beiträge: 28
Registriert: 23.08.2018

erstellt am: 07. Nov. 2018 13: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

... wenn ich es nun richtig verstehe, dann geht jemand raus und erzeugt  irgendwelche Messpunkte, ohne dass von diesen am Ende bekannt ist, was dieser Messpunkt zum Inhalt hat - richtig?
Falls dem so ist, dann gibt es keine Lösung. Dann kann es immer passieren, dass der Mülleimer vorm Zoo eindeutig dem nächstgelegenen Leitpfosten der 10km entfernten Landstraße zugeordnet wird.


Nicht dass wir uns hier falsch verstehen. Es würde schon genügen, wenn in der Messpunkt-DWG nur Leitpfosten enthalten sind.
-----
          Dem ist so. Entweder separate dwg oder in einem Attribut vermerkt.
-----
Das wäre die 2. Information die es braucht, um eine eindeutige Zuordnung oder eben eine Eindeutige Nichtzuordnung feststellen zu können.
Soll heißen: Entstehen die Daten qualifiziert, ohne dass die Qualifizierung an irgendeiner Stelle vermerkt ist, dann muss der Workflow beschrieben sein, und das Programm kann saubere Ergebnisse liefern.


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

cadoc
Mitglied



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

Beiträge: 28
Registriert: 23.08.2018

erstellt am: 07. Nov. 2018 13: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

Dachte schon ich bin der Einzige hier.


Zitat:
Original erstellt von Brischke:
...


Darauf hast du keinen Einfluß mehr. Meine Haare sind schon grau. ;-)

Grüße!
Holger



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: 07. Nov. 2018 13:41    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 cadoc 10 Unities + Antwort hilfreich

Da es ja "in beide Richtungen funktioniert" ist zunächst mal egal ob hier rot oder weiss verschoben wird,
ich kommentiere einfach noch mal und du machst es in der (deiner) hier angehängten Datei.
Ob BlockA die weissen oder die roten sind ist ja wurscht, im Anschluß verscuhst du es
dann einfach noch mal mit den jeweils anderen.

Öffne die Datei neu, lade den code, starte blockhuckepack und verklick sich nicht (ggf. ist da ein Bug drin - aber ich schaue nicht nach.

Zitat:
Original erstellt von cadoc:
Klick auf einen A-Block (um den Namen zu erhalten)
OK
Ok, eine Blockreferenz gewählt
wählen der A-Blöcke (welche sollen verschoben werden)
OK - Eigentlich immer alle
dann wähle diese aus, egal wie, gerne auch mit der Objektwahl ALLE
Klick auf einen B-Block (damit der nächste passende Block gesucht werden kann)
OK
gut, dann sollte nun die Rückmeldung nicht
Objekte wählen: 0 gefunden, 0 gesamt
lauten sondern

Befehl: BLOCKHUCKEPACK
Objekt wählen:
Objekte wählen: alle
3 gefunden
Objekte wählen:
Objekt wählen: nil
Befehl:

#oder#

Befehl: BLOCKHUCKEPACK
Objekt wählen:
Objekte wählen: alle
4 gefunden
Objekte wählen:
Objekt wählen: nil
Befehl:
[i][/i]


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

cadoc
Mitglied



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

Beiträge: 28
Registriert: 23.08.2018

erstellt am: 07. Nov. 2018 13: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

Sozusagen einfach nur saugeil
            D        A        N        K        E

Zitat:
Original erstellt von cadffm:
Da es ja "in beide Richtungen funktioniert" ist zunächst mal egal ob hier rot oder weiss verschoben wird,
ich kommentiere einfach noch mal und du machst es in der (deiner) hier angehängten Datei.
Ob BlockA die weissen oder die roten sind ist ja wurscht, im Anschluß verscuhst du es
dann einfach noch mal mit den jeweils anderen.

Öffne die Datei neu, lade den code, starte blockhuckepack und verklick sich nicht (ggf. ist da ein Bug drin - aber ich schaue nicht nach.


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. Nov. 2018 13:57    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 cadoc 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von cadoc:
... Dem ist so. Entweder separate dwg oder in einem Attribut vermerkt. ...

Dann brauchst du doch nur die Filterbedingung festlegen, welche A-Blöcke überhaupt in den Entfernungsvergleich einzubeziehen sind. Ich gehe davon aus, dass es eine begrenzte Ungenauigkeit beim Aufmaß gibt. Damit kannst du die Zuordnungsbedingungen eindeutig formulieren. Im Ergebnis existieren, dann
1) zu B-Blöcken zugeordnete A-Blöcke
2) A-Blocke, zu denen kein B-Block zugeordnet werden konnte
3) B-Blöcke, zu denen kein A-Block zugeordnet werden konnte

Dein Programmablauf passt ja für die einzelne Betrachtung, so dass ich nur noch einen Konfigurationsbereich ergänzen wollte. Im Ablauf muss dann beim Einlesen der Vermesser-dwg die Qualifikation des Inhalts stattfinden, damit du die Filterung der A-Blöcke vornehmen kannst. Zusätzlich kann man für jeden Typ sicher auch die Genauigkeit festlegen, in welchem Umkreis sich ein A- und B-Block überhaupt für einen Vergleich befinden müssten.
A) Konfigurationsbereich
A1) Festlegung von Typen (Leitpfosten/Mülleimer, ...) und deren Erkennungsmerkmale (z.Bsp. Attributinhalt(e)
A2) Definition der Vermessungsungenauigkeit [Delta]

Wenn natürlich schon alles in einer Zeichnung ist, dann wird's eng.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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

Andreas Kraus
Mitglied
Elektrotechniker


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

Beiträge: 1356
Registriert: 11.01.2006

WIN 10
ACAD 2022

erstellt am: 07. Nov. 2018 14:20    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 cadoc 10 Unities + Antwort hilfreich

So, bin wieder da und hab wohl einiges verpasst.
Kaum ist man mal am Arbeiten dreht sich die Welt weiter 
Sowas aber auch.

Es scheint zu klappen.
Freut mich (und dich auch)

Ich kann dann auch noch Fehlerbehandlung usw. reinpacken und den Code etwas schöner machen.
Holgers Ideen sind gut ... das kann richtig schön werden.

Wenn noch was ist einfach melden

Danke auch an alle die zur Klärung beigetragen haben.
Super Truppe hier (wohlfühl  )

------------------
Geht nicht, gibts nicht

Gruß
Andreas

http://kraus-cad.de

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

cadoc
Mitglied



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

Beiträge: 28
Registriert: 23.08.2018

erstellt am: 07. Nov. 2018 14: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

Hallo Holger
ja ich habs schon gemerkt, an dir kommt nichts vorbei, gründlicher
als man ahnen konnte ;-). Zwingt einen sich zu "sortieren" und alle
Eventualitäten zu berücksichtigen.

Hallo Andreas,
wie gesagt, funtioniert schon gut genug für mich.
Sahnehäubchen wäre natürlich noch, die Übergabe der Höhe des zweitgewählten Blocks im Attribut HOEHE
an den nun verschobenen einfügepunktgleichen erstgewählten Block in z.B. das Attribut S_ATT1.

Aber ich verneige mich auch so schon vor euch.

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

Andreas Kraus
Mitglied
Elektrotechniker


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

Beiträge: 1356
Registriert: 11.01.2006

WIN 10
ACAD 2022

erstellt am: 08. Nov. 2018 09: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 Nur für cadoc 10 Unities + Antwort hilfreich


blockhuckepack.lsp

 
So, hier das Ganze mit Übernahme des Attributwerts.

Auch hier ohne viel Kosmetik. Attributnamen sind fest im Programm eingetragen.
Kann man natürlich auch noch mit Auswahl und/oder Dialogfeld aufmotzen.

------------------
Geht nicht, gibts nicht

Gruß
Andreas

http://kraus-cad.de

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

cadoc
Mitglied



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

Beiträge: 28
Registriert: 23.08.2018

erstellt am: 08. Nov. 2018 15: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

Damit hab ich nicht mehr gerechnet.
Das ist mir wirklich eine große Hilfe.

TAL

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