Ansys.com


Pagina 1 di 2 12 UltimaUltima
Risultati da 1 a 10 di 19

Discussione: Coordinate blocco

  1. #1
    Utente Junior
    Iscritto dal
    2008
    Messaggi
    10
    Professione
    Impiegato
    Regione
    Lombardia
    Software
    Autocad Access AutoIt

    Predefinito Coordinate blocco

    Salve a tutti, sono nuovo nel forum e ho un problema:

    Sto realizzando un semplice programmino in AutoIt che si interfaccia con Autocad, il problema è che se interrogo autocad sulle coordinate di un blocco, 'insertionpoint' mi ritorna una variabile vuota, so che è una variabile double che contiene X Y Z ma in AutoIt le matrici vengono gestite con [] e non () non so se è questo il problema, GetEntity mi risponde nella stessa maniera, vuota.

    Esiste il modo di estrapolare X Y Z in una variabile non double.

    Ringrazio e mi scuso per la forma forse un poco affrettata, ma l'ora e tarda e connetto sempre meno, qualsiasi suggerimento e ben accetto.

    Saluti:p

  2. #2
    Utente Senior L'avatar di Shape
    Iscritto dal
    2007
    Messaggi
    1220
    Professione
    Disegnatore Carpenteria
    Regione
    Friuli
    Software
    Autocad, VBA-AutoLisp, Tecnometal4D, GIMP

    Predefinito

    Citazione Originariamente Scritto da OneWay Visualizza Messaggio
    Salve a tutti, sono nuovo nel forum e ho un problema:

    Sto realizzando un semplice programmino in AutoIt che si interfaccia con Autocad, il problema è che se interrogo autocad sulle coordinate di un blocco, 'insertionpoint' mi ritorna una variabile vuota, so che è una variabile double che contiene X Y Z ma in AutoIt le matrici vengono gestite con [] e non () non so se è questo il problema, GetEntity mi risponde nella stessa maniera, vuota.

    Esiste il modo di estrapolare X Y Z in una variabile non double.

    Ringrazio e mi scuso per la forma forse un poco affrettata, ma l'ora e tarda e connetto sempre meno, qualsiasi suggerimento e ben accetto.

    Saluti:p
    InsertionPoint

    Variant (three-element array of doubles); read-write
    A 3D WCS coordinate representing the insertion point.

    In VBA la variabile che ti ritorna non è un Double ma un variant array 3 dimensioni, insertionpoint(0)=X insertionpoint(1)=Y insertionpoint(2)=Z

    Il Double lo utilizzi solo se devi comporre la matrice

    Buon lavoro
    Ultima modifica di Shape; 08-01-2008 alle 09: 49

  3. #3
    Utente Junior
    Iscritto dal
    2008
    Messaggi
    10
    Professione
    Impiegato
    Regione
    Lombardia
    Software
    Autocad Access AutoIt

    Predefinito

    Ti ringrazio, infatti in VBA non ho problemi a gestirlo ma in AutoIt non è la stessa cosa.

    Comunque, non esiste il modo di gestire l'array 1-2-3 come una stringa unica, magari con un comando interno ad autocad che concatena l'array, o anche un modo di estrarre la singola variabile X, Y, Z come per XScaleFactor, YScaleFactor ecc.

    Se conosci e usi AutoIt posso inserire il codice per comprendere meglio.

    Ho provato ad usare anche GetEntity ma anche in questo caso mi restituisce la variabile insertpoint che 'sembra vuota', sembra, perchè in realtà non riesco a gestirla come array in AutiIt.

    Dimmi tu, visto che in tre forum in cui ho fatto questa domanda sei l'unico che si sia azzardato a rispondermi.

  4. #4
    Utente Senior L'avatar di Shape
    Iscritto dal
    2007
    Messaggi
    1220
    Professione
    Disegnatore Carpenteria
    Regione
    Friuli
    Software
    Autocad, VBA-AutoLisp, Tecnometal4D, GIMP

    Predefinito

    In che modo ti nterfacci con autocad ?

    Scrivimi due righe per capire come funziona e vediamo se ne usciamo

  5. #5
    Utente Junior
    Iscritto dal
    2008
    Messaggi
    10
    Professione
    Impiegato
    Regione
    Lombardia
    Software
    Autocad Access AutoIt

    Predefinito

    Ti passo uno script in AutoIt il linguaggio che vorrei utilizzare.

    code:
    $AcadApp = ObjGet("","AutoCAD.Application")
    Dim $SSet, $Ent
    $AcadDoc = $AcadApp.ActiveDocument
    WinActivate ($Acadapp.Caption,$AcadDoc.name)
    $SSet = $AcadDoc.ActiveSelectionSet
    $SSet.SelectOnScreen
    For $Ent In $SSet
    If $Ent.EntityName = "AcDbBlockReference" Then
    MsgBox(0,"Specifiche Blocco","ScaleX: " & $Ent.XScaleFactor & @CR & _
    "ScaleY: " & $Ent.YScaleFactor & @CR & _
    "ScaleZ: " & $Ent.ZScaleFactor & @CR & _
    "Unita mis: " & $Ent.insunits & @CR & _
    "Nome: " & $Ent.name & @CR & _
    "IDObj: " & $Ent.objectid & @CR & _
    "NomeEff: " & $Ent.effectivename & @CR & _
    "InsertP: " & $Ent.insertionpoint & @CR & _
    "Layer: " & $Ent.layer & @CR & _
    "Material: " & $Ent.material & @CR & _
    "InsertP: " & $Ent.objectname)
    Else
    MsgBox (0,"","Hai mancato il blocco!" & @CR & "Riprova sarai più fortunato.")
    EndIf
    next

    Prima di tutto occorre aprire un autocad ed inserire un blocco, dopodichè all'esecuzione dello script si seleziona il blocco e ti apparirà un box con le specifiche.

    $Ent.insertionpoint come vedrai sarà vuoto, in AutoIt le matrici si gestiscono con le [] e non con (), ma visualizzando $Ent.insertionpoint[0], 1, 2 darà un errore.

    Inizio a pensare che probabilmente non è possibile reperire quella info, anche se tutte le altre vengono visualizzate correttamente.

    Ti ringrazio in anticipo :)

  6. #6
    Utente Senior L'avatar di Shape
    Iscritto dal
    2007
    Messaggi
    1220
    Professione
    Disegnatore Carpenteria
    Regione
    Friuli
    Software
    Autocad, VBA-AutoLisp, Tecnometal4D, GIMP

    Predefinito

    Allora premetto che non conosco Autoit ma ho scaricato il prog e non sembra molto diverso dal vb...

    prova a vedere con questo


    Dim $myArray[10][20] ;element 0,0 to 9,19
    $rows = UBound($myArray)
    $cols = UBound($myArray, 2)
    $dims = UBound($myArray, 0)

    MsgBox(0, "The " & $dims & "-dimensional array has", _
    $rows & " rows, " & $cols & " columns")

    ;Display $myArray's contents
    $output = ""
    For $r = 0 to UBound($myArray,1) - 1
    $output = $output & @LF
    For $c = 0 to UBound($myArray,2) - 1
    $output = $output & $myArray[$r][$c] & " "
    Next
    Next
    MsgBox(4096,"Array Contents", $output)


    se gestisci insertionpoint come un array e provi a ripescarlo forse funziona
    Ultima modifica di Shape; 08-01-2008 alle 18: 49

  7. #7
    Utente Junior
    Iscritto dal
    2008
    Messaggi
    10
    Professione
    Impiegato
    Regione
    Lombardia
    Software
    Autocad Access AutoIt

    Predefinito

    Dunca, ho provato a mescolare le carte col codi che mi hai inviato ma non ho generato nossun dato, aimè.

    code:
    Dim $myArray[10][20] ;element 0,0 to 9,19
    $rows = UBound($myArray)
    $cols = UBound($myArray, 2)
    $dims = UBound($myArray, 0)

    MsgBox(0, "The " & $dims & "-dimensional array has", $rows & " rows, " & $cols & " columns")

    ;Display $myArray's contents
    $output = ""
    For $r = 0 to UBound($myArray,1) - 1
    $output = $output & @LF
    For $c = 0 to UBound($myArray,2) - 1
    $output = $output & $myArray[$r][$c] & " "
    Next
    Next
    MsgBox(4096,"Array Contents", $output)



    $AcadApp = ObjGet("","AutoCAD.Application")
    Dim $SSet, $Ent, $Ena

    $AcadDoc = $AcadApp.ActiveDocument
    WinActivate ($Acadapp.Caption,$AcadDoc.name)
    $SSet = $AcadDoc.ActiveSelectionSet
    $SSet.SelectOnScreen

    For $Ent In $SSet
    If $Ent.EntityName = "AcDbBlockReference" Then
    MsgBox(0,"Specifiche Blocco","ScaleX: " & $Ent.XScaleFactor & @CR & _
    "ScaleY: " & $Ent.YScaleFactor & @CR & _
    "ScaleZ: " & $Ent.ZScaleFactor & @CR & _
    "Unita mis: " & $Ent.insunits & @CR & _
    "Nome: " & $Ent.name & @CR & _
    "IDObj: " & $Ent.objectid & @CR & _
    "NomeEff: " & $Ent.effectivename & @CR & _
    "InsertP: " & $Ent.insertionpoint & @CR & _
    "Layer: " & $Ent.layer & @CR & _
    "Material: " & $Ent.material & @CR & _
    "InsertP: " & $Ent.objectname)
    Else
    MsgBox (0,"","Hai mancato il blocco!" & @CR & "Riprova sarai più fortunato.")
    EndIf
    next



    $myArray = $SSet
    $output = ""
    For $r = 0 to UBound($myArray,1) - 1
    $output &= @LF
    For $c = 0 to UBound($myArray,2) - 1
    $output &= $myArray[$r][$c] & " "
    Next
    Next
    MsgBox(4096,"Array Contents", $output)

    Ho provato anche $myArray = $Ent.insertionpoint al posto di $myArray = $SSet ma il risultato non cambia, l'array risulta vuota.

    Altra cosa, si puo elencare i nomi delle proprietà dell'oggetto, prelevandole dall'oggetto stesso, es:

    XScaleFactor
    insunits
    layer

    in modo da sapere prima il nome della proprietà cosa si può interrogare.

    Ti ringrazio comunque, anche se mi sà che non ne caveremo un ragno dal buco.

  8. #8
    Utente Senior L'avatar di Shape
    Iscritto dal
    2007
    Messaggi
    1220
    Professione
    Disegnatore Carpenteria
    Regione
    Friuli
    Software
    Autocad, VBA-AutoLisp, Tecnometal4D, GIMP

    Predefinito

    Ehh io qui mollo la presa perchè mi sto pure innervosendo....

    Fammi sapere se risolvi...

    Buona fortuna....

    Un domanda stupida.... perchè AutoIt e non vb ? o ancor meglio VBA che puoi interlacciarlo anche con office eventualmente ?

  9. #9
    Utente Junior
    Iscritto dal
    2008
    Messaggi
    10
    Professione
    Impiegato
    Regione
    Lombardia
    Software
    Autocad Access AutoIt

    Predefinito

    Scusa se ti ho fatto innervosire non era mia intenzione.

    Uso VBA da qualche anno e volevo qualcosa di più sfizioso, ho iniziato a masticare VBScript, molto interessante ma mi mancavano le interfacce, GUI se non erro, e sono approdato ad AutoIt che tra l'altro mi permette di generare degli eseguibili che non hanno bisogno di ocx e menate varie.

    Ultima cosa, per il discorso di estrarre i nomi delle proprietà da un oggetto sai darmi una dritta?

    Un saluto.

  10. #10
    Utente Senior L'avatar di Shape
    Iscritto dal
    2007
    Messaggi
    1220
    Professione
    Disegnatore Carpenteria
    Regione
    Friuli
    Software
    Autocad, VBA-AutoLisp, Tecnometal4D, GIMP

    Predefinito

    forse così ce la fai....

    Comando: (ENTGET(CAR(ENTSEL)))

    Selezionare oggetto: ((-1 . <Nome entità: 7eda9a80>) (0 . "INSERT") (330 .
    <Nome entità: 7efe3cf8>) (5 . "26480") (100 . "AcDbEntity") (67 . 0) (410 .
    "Model") (8 . "0") (100 . "AcDbBlockReference") (66 . 1) (2 . "mar_pez") (10
    55048.5 1758.52 0.0) (41 . 15.0) (42 . 15.0) (43 . 15.0) (50 . 0.0) (70 . 0)
    (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0))

    questi sono i codici DXF degli oggetti. Come vedi al codice 10 corrisponde il punto di inserimento del blocco...

    Entity group codes by number
    Group code Description

    -5


    APP: persistent reactor chain

    -4


    APP: conditional operator (used only with ssget)

    -3


    APP: extended data (XDATA) sentinel (fixed)

    -2


    APP: entity name reference (fixed)

    -1


    APP: entity name. This changes each time a drawing is opened. It is never saved. (fixed)

    0


    Text string indicating the entity type (fixed)

    1


    Primary text value for an entity

    2


    Name (attribute tag, block name, and so on)

    3-4


    Other textual or name values

    5


    Entity handle. Text string of up to 16 hexadecimal digits (fixed)

    6


    Linetype name (fixed)

    7


    Text style name (fixed)

    8


    Layer name (fixed)

    9


    DXF: variable name identifier (used only in HEADER section of the DXF file).

    10


    Primary point. This is the start point of a line or text entity, center of a circle, and so on.
    DXF: X value of the primary point (followed by Y and Z value codes 20 and 30)
    APP: 3D point (list of three reals)

    11-18


    Other points.
    DXF: X value of other points (followed by Y value codes 21-28 and Z value codes 31-38)
    APP: 3D point (list of three reals)

    20, 30


    DXF: Y and Z values of the primary point

    21-28, 31-37


    DXF: Y and Z values of other points

    38


    DXF: entity's elevation if nonzero.

    39


    Entity's thickness if nonzero (fixed)

    40-48


    Floating-point values (text height, scale factors, and so on)

    48


    Linetype scale. Floating-point scalar value. Default value is defined for all entity types.

    49


    Repeated floating-point value. Multiple 49 groups may appear in one entity for variable-length tables (such as the dash lengths in the LTYPE table). A 7x group always appears before the first 49 group to specify the table length.

    50-58


    Angles (output in degrees to DXF files and radians through AutoLISP and ARX applications).

    60


    Entity visibility. Integer value. Absence or 0 indicates visibility; 1 indicates invisibility.

    62


    Color number (fixed)

    66


    "Entities follow" flag (fixed)

    67


    Space--that is, model or paper space (fixed)

    68


    APP: identifies whether viewport is on but fully off screen; is not active or is off.

    69


    APP: viewport identification number.

    70-78


    Integer values, such as repeat counts, flag bits, or modes

    90-99


    32-bit integer values

    100


    Subclass data marker (with derived class name as a string). Required for all objects and entity classes that are derived from another concrete class to segregate data defined by different classes in the inheritance chain for the same object.
    This is in addition to the requirement for DXF names for each distinct concrete class derived from ARX (see "Subclass Markers").

    102


    Control string, followed by "{<arbitrary name>" or "}". Similar to the xdata 1002 group code, except that when the string begins with "{", it can be followed by an arbitrary string whose interpretation is up to the application. The only other allowable control string is "}" as a group terminator. As noted before, AutoCAD does not interpret these strings except during drawing audit operations; they are for application use.

    105


    DIMVAR symbol table entry object handle

    210


    Extrusion direction (fixed).
    DXF: X value of extrusion direction
    APP: 3D extrusion direction vector

    220, 230


    DXF: Y and Z values of the extrusion direction

    280-289


    8-bit integer values

    300-309


    Arbitrary text strings

    310-319


    Arbitrary binary chunks with same representation and limits as 1004 group codes: hexadecimal strings of up to 254 characters represent data chunks of up to 127 bytes.

    320-329


    Arbitrary object handles. Handle values that are taken "as is." They are not translated during INSERT and XREF operations.

    330-339


    Soft-pointer handle. Arbitrary soft pointers to other objects within same DXF file or drawing. Translated during INSERT and XREF operations.

    340-349


    Hard-pointer handle. Arbitrary hard pointers to other objects within same DXF file or drawing. Translated during INSERT and XREF operations.

    350-359


    Soft-owner handle. Arbitrary soft ownership links to other objects within same DXF file or drawing. Translated during INSERT and XREF operations.

    360-369


    Hard-owner handle. Arbitrary hard ownership links to other objects within same DXF file or drawing. Translated during INSERT and XREF operations.

    999


    DXF: The 999 group code indicates that the line following it is a comment string. DXFOUT does not include such groups in a DXF output file, but DXFIN honors them and ignores the comments. You can use the 999 group to include comments in a DXF file that you've edited.

    1000


    ASCII string (up to 255 bytes long) in extended data.

    1001


    Registered application name (ASCII string up to 31 bytes long) for extended data.

    1002


    Extended data control string ("{"or "}").

    1003


    Extended data layer name.

    1004


    Chunk of bytes (up to 127 bytes long) in extended data.

    1005


    Entity handle in extended data. Text string of up to 16 hexadecimal digits

    1010


    A point in extended data
    DXF: X value (followed by 1020 and 1030 groups)
    APP: 3D point

    1020, 1030


    DXF: Y and Z values of a point

    1011


    A 3D world space position in extended data
    DXF: X value (followed by 1021 and 1031 groups)
    APP: 3D point

    1021, 1031


    DXF: Y and Z values of a World space position

    1012


    A 3D world space displacement in extended data
    DXF: X value (followed by 1022 and 1032 groups)
    APP: 3D vector

    1022, 1032


    DXF: Y and Z values of a World space displacement

    1013


    A 3D world space direction in extended data.
    DXF: X value (followed by 1022 and 1032 groups)
    APP: 3D vector

    1023, 1033


    DXF: Y and Z values of a World space direction

    1040


    Extended data floating-point value.

    1041


    Extended data distance value.

    1042


    Extended data scale factor.

    1070


    Extended data 16-bit signed integer.

    1071


    Extended data 32-bit signed long.


  • Pagina 1 di 2 12 UltimaUltima

    Discussioni Simili

    1. Esportare coordinate UCS
      Di PabloPicasso nel forum Inventor
      Risposte: 8
      Ultimo Messaggio: 04-02-2011, 16: 30
    2. Estrarre le coordinate del punto base di definizione di un blocco
      Di Giuseppe Beatrice nel forum Lisp per Autocad
      Risposte: 10
      Ultimo Messaggio: 14-12-2010, 16: 11
    3. ricerca coordinate
      Di mavr78 nel forum OneSpace Designer Drafting / ME10
      Risposte: 5
      Ultimo Messaggio: 15-04-2009, 18: 19
    4. Modifica locale di un blocco senza selezione del riferimento
      Di marco72 nel forum Lisp per Autocad
      Risposte: 3
      Ultimo Messaggio: 03-11-2008, 01: 25
    5. Sistema di coordinate
      Di LukeSkywalker nel forum OneSpace Designer Modeling
      Risposte: 3
      Ultimo Messaggio: 07-03-2008, 18: 59

    Segnalibri

    Segnalibri

    Permessi di Scrittura

    • Tu non puoi inviare nuove discussioni
    • Tu non puoi inviare risposte
    • Tu non puoi inviare allegati
    • Tu non puoi modificare i tuoi messaggi
    •  



    CAD3D.it - la community dei progettisti