CADsite

  • di 19 09 2017, 22:27:25
  • Welkom, gast
Log in of registreer jezelf.

Login met gebruikersnaam, wachtwoord en sessielengte
Geavanceerd zoeken  

Nieuws:

Pagina's: [1]   Omlaag

Auteur Topic: Wblock als copy paste alternatief  (gelezen 106 keer)

Reimer

  • forumverslaafde
  • ******
  • Offline Offline
  • Berichten: 1277
    • Bekijk profiel
Wblock als copy paste alternatief
« Gepost op: ma 11 09 2017, 10:20:48 »

Ik maak veel gebruik van ctrl+c en ctrl+v. Nu merk ik dat dat op ons systeem steeds trager werkt, vooral bij het plakken. Ik heb ook wel eens gelezen dat iemand dacht dat er eerder errors in je dwg ontstaan wanneer je via het klembord van Windows kopieert. Daarom probeer ik een lisp te maken om via Wblock te kopiëren en plakken. Hieronder mijn eerste opzet.
Ik ben benieuwd wat anderen hier van vinden. Of iemand grote risico's ziet, of liever nog verbeteringen!

Voor het plakken (P00) ben ik vooral aan het zoeken naar een methode waarbij het wblock geëxplodeerd in de tekening komt (ook als deze op een gelockte laag ingevoegd wordt) en waarna de blockdefinitie weer verwijderd wordt. Purge werkt dan weer erg langzaam, vandaar dat ik een stukje visual-lisp van internet heb gebruikt.

(defun c:c00 ( / OLDECHO SS)
  (setq OLDECHO (getvar 'cmdecho))
  (setvar 'cmdecho 0)
;select objects:
  (or
    (setq SS (ssget ":L-i"));add preselected objects (exclude locked layers)
    (setq SS (ssget "_:L"));select objects (exclude locked layers)
  );_or
  (command);deselect SS
;check file and folder, execute wblock:
  (if SS
    (if (findfile "c:\\temp")
      (progn
        (command "_.ucs" "w")
        (if (findfile "c:\\temp\\cpblock.dwg")
          (command "_.wblock" "c:\\temp\\cpblock.dwg" "y" "" '(0 0) SS "");folder is found, block overwritten
          (command "_.wblock" "c:\\temp\\cpblock.dwg" "" '(0 0) SS "");forder is found, block created
        );_if blk exists
        (command "_.ucs" "p")
      );_progn
      (prompt "\De ingestelde map (c:\\temp) is niet gevonden! -EINDE-")
    );_if dir exists
    (prompt "\Geen objecten geselecteerd! -EINDE-")
  );_if SS
  (command "_.oops")
  (prompt "\nCOPY00, objecten zijn gekopieerd naar c:\\temp\cpblock.dwg. Gebruik P00 om te plakken.")
  (setvar 'cmdecho OLDECHO)
  (print)
);_defun


(defun c:p00 ( / OLDECHO BLK)
  (if (not (tblsearch "BLOCK" "cpblock"))
    (if (findfile "c:\\temp\\cpblock.dwg")
      (progn
        (setq OLDECHO (getvar 'cmdecho))
        (setvar 'cmdecho 0)
        (command "-insert" "c:\\temp\\cpblock.dwg")
        (command)
        (setvar 'insname "*cpblock")
        (command "ucs" "w")
        (command "-insert" "" '(0 0) "1" "0")
        (command "ucs" "p")
        (vl-load-com)
        (and (setq blk (tblobjname "block" "cpblock"))
          (vla-delete (vlax-ename->vla-object (cdr (assoc 330 (entget blk)))))
        );_and
        (setvar 'cmdecho OLDECHO)
        (prompt "P00 is gereed")
      );_progn
      (prompt "\nHet kopiebestand c:\\temp\\cpblock.dwg is niet gevonden. -EINDE-")
    );_if c:\\temp\\cpblock
    (prompt "\nHet block CPBLOCK bestaat al in de tekening. Verwijder deze eerst! -EINDE-")
  );_if cpblock
  (print)
);_defun

Groeten,
Reimer

Gelogd

gery

  • vaste forumklant
  • *****
  • Offline Offline
  • Berichten: 277
    • Bekijk profiel
Re: Wblock als copy paste alternatief
« Reactie #1 Gepost op: ma 11 09 2017, 12:11:40 »

Ik heb net uw code getest en deze is op mijn PC niet sneller dan de standaard ctrl-c/ctrl-p. Ik zal vanavond de code in detail bestuderen.

Ikzelf gebruik voor het kopiëren en plakken via clipboard en met base point 0,0,0 volgende LISP code (via 2 tool buttons):
(defun c:ClipBaseCopy ( / #ss #ssLength )

  (if (not (setq #ss (ssget "_I"))) (setq #ss (ssget)))
 
  (setq #ssLength (sslength #ss))

  (command "_.copybase" "0,0,0" #ss "")

  (princ "\n")
                         (princ #ssLength)
  (cond ((= #ssLength 1) (princ " entity is")))
  (cond ((> #ssLength 1) (princ " entities are")))
                         (princ " copied to the clipboard with base point 0,0,0")
  (princ)

)



(defun c:ClipBasePaste ( / )
  (command "_.pasteclip" "0,0,0")
  (princ "\nClipboard contents is pasted to base point 0,0,0")
  (princ)
)

Met deze codes heb ik nog nooit problemen gehad.
Gelogd

EddyBeerke

  • forumverslaafde
  • ******
  • Offline Offline
  • Berichten: 2178
  • 1d CADSITE.be niet bezoeken = 1 dag niet geleefd!
    • Bekijk profiel
    • Mijn site
Re: Wblock als copy paste alternatief
« Reactie #2 Gepost op: ma 11 09 2017, 13:32:04 »

Uit de help:
Citaat van: Autodesk
You can control block insertion behavior using the following methods:

Inserting exploded blocks: Preceding the name of the block with an asterisk (*) explodes the block and inserts the individual parts of it. The block definition is not added to the drawing.
Dus een "*" voor het blockmaan zorgd ervoor dat het block geexplodeerd in de tekening komt zonder block definitie.
Gelogd

roy_043

  • forumverslaafde
  • ******
  • Offline Offline
  • Berichten: 1371
  • BricsCAD 16
    • Bekijk profiel
    • www.b-k-g.nl
Re: Wblock als copy paste alternatief
« Reactie #3 Gepost op: ma 11 09 2017, 14:00:42 »

Vervolgend op het commentaar van Eddy (let op "_non"):
(command "_.-insert" "*cpblock=C:\\temp\\cpblock.dwg" "_non" '(0 0 0) 1 0)
Overigens is het beter om te proberen het copy-paste probleem eerst op te lossen alvorens een work-around te verzinnen.
Gelogd

gery

  • vaste forumklant
  • *****
  • Offline Offline
  • Berichten: 277
    • Bekijk profiel
Re: Wblock als copy paste alternatief
« Reactie #4 Gepost op: ma 11 09 2017, 14:02:05 »

Voor het plakken (P00) ben ik vooral aan het zoeken naar een methode waarbij het wblock geëxplodeerd in de tekening komt (ook als deze op een gelockte laag ingevoegd wordt) en waarna de blockdefinitie weer verwijderd wordt.
Hier geeft u zelf het antwoord: https://www.cadsite.be/smf/index.php?topic=6643.msg35126#msg35126, ik weet wel niet of dit ook op een gelockte laag lukt.
Gelogd

Reimer

  • forumverslaafde
  • ******
  • Offline Offline
  • Berichten: 1277
    • Bekijk profiel
Re: Wblock als copy paste alternatief
« Reactie #5 Gepost op: ma 11 09 2017, 22:55:52 »

Bedankt voor jullie reacties allemaal. We werken sinds kort met al onze software vanaf de server (deze is vakkundig afgeschermd). De ICT-afdeling doet zijn best om alle problemen op te lossen maar ik ben bang dat dit nog lang kan gaan duren.  :roll:

Ik heb de code van Roy getest maar krijg een foutmelding:
(command "_.-insert" "*cpblock=C:\\temp\\cpblock.dwg" "_non" '(0 0 0) 1 0)
_.-insert Enter block name or [?]: *cpblock=C:\\temp\\cpblock.dwg
** Error: You may not explode blocks using the
"block name=file name" syntax.

Wat wel werkt is:
(command "_.-insert" "*C:\\temp\\cpblock.dwg" "_non" '(0 0 0) 1 0)
Ik hoef nu ook de visual lisp code niet meer te gebruiken.  :vreegoe:

Nogmaals bedankt!

Reimer
Gelogd

roy_043

  • forumverslaafde
  • ******
  • Offline Offline
  • Berichten: 1371
  • BricsCAD 16
    • Bekijk profiel
    • www.b-k-g.nl
Re: Wblock als copy paste alternatief
« Reactie #6 Gepost op: di 12 09 2017, 09:48:39 »

@Reimer:
BricsCAD accepteert beide varianten en AutoCAD dus alleen de laatste:
(command "_.-insert" "*cpblock=C:\\temp\\cpblock.dwg" "_non" '(0 0 0) 1 0)(command "_.-insert" "*C:\\temp\\cpblock.dwg" "_non" '(0 0 0) 1 0)
Gelogd

cadtools@gmail.com

  • vaste forumklant
  • *****
  • Offline Offline
  • Berichten: 310
  • BIM dreamer
    • Bekijk profiel
Re: Wblock als copy paste alternatief
« Reactie #7 Gepost op: zo 17 09 2017, 21:38:02 »

Misschien 'Superclip' eens proberen.
Je kunt er ook een netwerk versie van maken zodat het als clipboard werkt tussen collega's.
Werkt best handig.

https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/superclip-revision/td-p/2942752
Gelogd

Reimer

  • forumverslaafde
  • ******
  • Offline Offline
  • Berichten: 1277
    • Bekijk profiel
Re: Wblock als copy paste alternatief
« Reactie #8 Gepost op: Gisteren om 08:15:52 »

Leuk om te zien. Het principe is hetzelfde als bij mij. Helaas loopt Superclip wel vast wanneer je Paste (Insert) terwijl de actieve laag gelocked is. De dialoogbox is wel handig omdat je met de toetsen makkelijk kunt kiezen tussen de opties.
Bedankt voor het delen!

Reimer
Gelogd
Pagina's: [1]   Omhoog