Newsgroup: it.comp.software.cad
Titolo: inserire tutti i dwg di una cartella in un file

volevo chiedere se qualcuno sa indicarmi una procedura automatica per
inserire, come blocchi, all'interno di un file dwg tutti i file
contenuti in una cartella (ad esempio con punto di inserimento 0,0 e
scalatura 1 e rotazione 100). ringrazio anticipatamente

spigodesign

Certo.
Diciamo che tu abbia 500 files. E che tu li abbia per comodità spostati 
tutti in C:\miadir
Con un qualsiasi software free che trovi in internet ti fai una lista ASCII 
dei files:
C:\miadir\blocco1.dwg
C:\miadir\blocco2.dwg
C:\miadir\blocco3.dwg
C:\miadir\blocco4.dwg
C:\miadir\blocco5.dwg
C:\miadir\blocco6.dwg
...
C:\miadir\blocco500.dwg
Con un qualsiasi editor di testo come Wordpad sostitutisci "C:\" con 
"-insert C:\"
Otterrai:
-insert C:\miadir\blocco1.dwg
-insert C:\miadir\blocco2.dwg
-insert C:\miadir\blocco3.dwg
-insert C:\miadir\blocco4.dwg
-insert C:\miadir\blocco5.dwg
-insert C:\miadir\blocco6.dwg
...
-insert C:\miadir\blocco500.dwg
Sostitutisci ".dwg" con ".dwg 0,0   " <-con 3 spazi
Otterrai:
-insert C:\miadir\blocco1.dwg 0,0
-insert C:\miadir\blocco2.dwg 0,0
-insert C:\miadir\blocco3.dwg 0,0
-insert C:\miadir\blocco4.dwg 0,0
-insert C:\miadir\blocco5.dwg 0,0
-insert C:\miadir\blocco6.dwg 0,0
...
-insert C:\miadir\blocco500.dwg 0,0
Salva il file come "miofile.scr"
Dal menu in Autocad Tools seleziona Run Script e seleziona il file, premi ok 
e tutto dovrebbe funzionare. Se non funziona bisogna verificare il numero di 
spazi , la sintassi del comando.
Saluti
frank

 frank
grazie mille frank


Oggi sono di buon umore.   ;-)
--
; Marc'Antonio Alessi - 
http://xoomer.virgilio.it/alessi
;
; Funzione: C:ALE_BlockInsertByFolder
;
; Versione 1.00 - 10/11/2006 per spigodesign
;
(defun C:ALE_BlockInsertByFolder ( / In_Pat BlkNam InsScl AttReq CmdEch Countr)
  (if (setq In_Pat (ALE_BrowseForFolder "Seleziona una cartella:" 48 ""))
    (progn
      (setq
        Countr 0  InsScl 1
        AttReq (getvar "ATTREQ")  CmdEch (getvar "CMDECHO")
      )
      (setvar "ATTREQ" 0) (setvar "CMDECHO" 0)
      (foreach ForElm (vl-directory-files In_Pat "*.DWG" 1)
        (if (snvalid (setq BlkNam (vl-filename-base ForElm)))
          (progn
            (setq Countr (1+ Countr))
            (command
              "_.INSERT" (strcat BlkNam "=" In_Pat "/" BlkNam)
              "_NONE" "0,0" InsScl "" 100
             ;"_PSCALE" InsScl pause InsScl "" pause
            )
            (command)
          )
          (alert
            (strcat
              "Nome del blocco " (chr 34) In_Pat "//" ForElm (chr 34) " non 
valido."
              "\n\n L'inserimento è stato ignorato."
            )
          )
        )
      )
      (setvar "ATTREQ" AttReq) ;(setvar "CMDECHO" CmdEch)
      (alert (strcat "Inseriti " (itoa Countr)  " blocchi."))
    )
  )
  (princ)
)
;
; Marc'Antonio Alessi - 
http://xoomer.virgilio.it/alessi
;
; Function: ALE_BrowseForFolder
;
; Version 1.01 - 10/11/2005
;
; Example: (ALE_BrowseForFolder "Select a folder:" 48 "C:\\Temp\\")
;       > "C:\\Temp"
;
; ulFlags - value of iOptns
;
; 1      RestrictToFilesystem = &H1   ' BIF_RETURNONLYFSDIRS
; 2      RestrictToDomain = &H2       ' BIF_DONTGOBELOWDOMAIN
; 8      RestrictToSubfolders = &H8   ' BIF_RETURNFSANCESTORS
; 16     ShowTextBox = &H10           ' BIF_EDITBOX
; 32     ValidateSelection = &H20     ' BIF_VALIDATE
; 64     NewDialogStyle = &H40        ' BIF_NEWDIALOGSTYLE
; 4096   BrowseForComputer = &H1000   ' BIF_BROWSEFORCOMPUTER
; 8192   BrowseForPrinter = &H2000    ' BIF_BROWSEFORPRINTER
; 16384  BrowseForEverything = &H4000 ' BIF_BROWSEINCLUDEFILES
;
; In this sample I use iOptns = 48 > 16 + 32
;
; Credits: Tony Tanzillo - Tim Willey
;
; VLA Acad  globals: *AcadApp*   = Acad.Application
;
; Vla-get-HWND note from Tim Willey: I set that up because I use dual
; monitors and it would pop up between both screens. After I set it, it popped
; in in the correct location, in the middle of the current Acad screen.
;
(defun ALE_BrowseForFolder (PrmStr iOptns DefFld / ShlObj Folder FldObj OutVal)
   (vl-load-com)
   (or *AcadApp* (setq *AcadApp* (vlax-get-acad-object)))
   (setq
     ShlObj (vla-getInterfaceObject *AcadApp* "Shell.Application")
     Folder (vlax-invoke-method ShlObj
              'BrowseForFolder (vla-get-HWND *AcadApp*) PrmStr iOptns DefFld
            )
   )
   (vlax-release-object ShlObj)
   (if Folder
      (progn
         (setq
           FldObj (vlax-get-property Folder 'Self)
           OutVal (vlax-get-property FldObj 'Path)
         )
         (vlax-release-object Folder)
         (vlax-release-object FldObj)
         OutVal
      )
   )
)

> Oggi sono di buon umore.   ;-)
il tuo buon umore è e sarà sicuramente contagioso...
grazie anche a te marco proverò subito i tuoi lisp

 grazie anche a te marco proverò subito i tuoi lisp
La soddisfazione,
per chi "perde" un po' del suo tempo per dare una soluzione
a un problema o per scrivere una funzione ad hoc,
non è tanto il ringraziamento quanto sapere se la soluzione
o la funzione hanno dato i risultati sperati.
Anche per tutti coloro che leggono il "thread" è utile sapere
se la "soluzione" al problema lo ha veramente risolto, evitando
così di provarla personalmente.
Marco