* * * *

Privacy Policy

Blog italiano

Clicca qui se vuoi andare al blog italiano su Lazarus e il pascal.

Forum ufficiale

Se non siete riusciti a reperire l'informazione che cercavate nei nostri articoli o sul nostro forum vi consiglio di visitare il
Forum ufficiale di Lazarus in lingua inglese.

Lazarus 1.0

Trascinare un file nel programma
DB concetti fondamentali e ZeosLib
Recuperare codice HTML da pagina web
Mandare mail con Lazarus
Stabilire il sistema operativo
Esempio lista in pascal
File INI
Codice di attivazione
Realizzare programmi multilingua
Lavorare con le directory
Utilizzare Unità esterne
TTreeView
TTreeview e Menu
Generare controlli RUN-TIME
LazReport, PDF ed immagini
Intercettare tasti premuti
Ampliare Lazarus
Lazarus e la crittografia
System Tray con Lazarus
UIB: Unified Interbase
Il file: questo sconosciuto
Conferma di chiusura di un applicazione
Liste e puntatori
Overload di funzioni
Funzioni a parametri variabili
Proprietà
Conversione numerica
TImage su Form e Panel
Indy gestiore server FTP lato Client
PopUpMenu sotto Pulsante (TSpeedButton)
Direttiva $macro
Toolbar
Evidenziare voci TreeView
Visualizzare un file Html esterno
StatusBar - aggirare l'errore variabile duplicata
Da DataSource a Excel
Le permutazioni
Brute force
Indy 10 - Invio email con allegati
La gestione degli errori in Lazarus
Pascal Script
Linux + Zeos + Firebird
Dataset virtuale
Overload di operatori
Lavorare con file in formato JSON con Lazarus
Zeos ... dietro le quinte (prima parte)
Disporre le finestre in un blocco unico (come Delphi)
Aspetto retrò (Cmd Line)
Lazarus 1.0
Come interfacciare periferica twain
Ubuntu - aggiornare free pascal e lazarus
fpcup: installazioni parallele di lazarus e fpc
Free Pascal e Lazarus sul Raspberry Pi
Cifratura: breve guida all'uso dell'algoritmo BlowFish con lazarus e free pascal.
Creare un server multithread
guida all'installazione di fpc trunk da subversion in linux gentoo
Indice
DB concetti fondamentali e connessioni standard
Advanced Record Syntax
DB concetti fondamentali e DBGrid
DB concetti fondamentali e TDBEdit, TDBMemo e TDBText
Advanced Record Syntax: un esempio pratico
Superclasse form base per programmi gestionali (e non)
Superclasse form base per programmi gestionali (e non) #2 - log, exception call stack, application toolbox
Superclasse form base per programmi gestionali (e non) #3 - traduzione delle form
Superclasse form base per programmi gestionali (e non) #4 - wait animation
Un dialog per la connessione al database:TfmSimpleDbConnectionDialog
Installare lazarus su mac osx sierra
immagine docker per lavorare con lazarus e free pascal
TDD o Test-Driven Development
Benvenuto! Effettua l'accesso oppure registrati.
Aprile 18, 2024, 04:46:27 pm

Inserisci il nome utente, la password e la durata della sessione.

352 Visitatori, 0 Utenti

Autore Topic: Estrazione dati estesi(XData) da file dwg di AutoCad  (Letto 254 volte)

alexarmato66

  • Full Member
  • ***
  • Post: 141
  • Karma: +1/-0
Estrazione dati estesi(XData) da file dwg di AutoCad
« il: Marzo 13, 2024, 01:47:06 pm »
Buondì,Qualcuno avrebbe un esempio di come estrarre da un file dwg di autocad i dati estesi (xdata)?

ho provato a scrivere qualcosa ma senza risultati:
Codice: [Seleziona]
program ReadAutoCADXData;

{$mode objfpc}{$H+}

uses
  Classes, SysUtils, Variants, ComObj, ActiveX;

var
  AutoCADApp: Variant;
  Document: Variant;
  ModelSpace: Variant;
  Entity: Variant;
  XData: Variant;
  XDataItem: Variant;
  i, j: Integer;

begin
  CoInitialize(nil);

  try
    // Creazione di un'istanza dell'applicazione AutoCAD
    AutoCADApp := CreateOleObject('AutoCAD.Application.22');

    // Verifica che AutoCAD sia in esecuzione
    if VarIsEmpty(AutoCADApp) then
    begin
      Writeln('AutoCAD non è in esecuzione.');
      Exit;
    end;

    // Ottiene il documento attivo
    Document := AutoCADApp.ActiveDocument;

    // Verifica che ci sia un documento attivo
    if VarIsEmpty(Document) then
    begin
      Writeln('Nessun documento attivo.');
      Exit;
    end;

    // Ottiene il modello dello spazio carta
    ModelSpace := Document.ModelSpace;

    // Ciclo attraverso tutte le entità nello spazio modello
    for i := 0 to ModelSpace.Count - 1 do
    begin
      Entity := ModelSpace.Item(i);

      // Ottiene il set degli XData dell'entità
      XData := Entity.XData;

      // Verifica se ci sono XData
      if not VarIsEmpty(XData) then
      begin
        // Stampa un'intestazione per l'entità corrente
        Writeln('Entità ', i + 1, ':');

        // Ciclo attraverso gli XData
        for j := 0 to XData.Count - 1 do
        begin
          // Ottiene l'elemento XData corrente
          XDataItem := XData.Item(j);

          // Stampa dettagli su ogni XData
          Writeln('  XData ', j + 1, ' - TypeCode: ', XDataItem.TypeCode);

          // Verifica se il codice dell'XData è 1000
          if XDataItem.TypeCode = 1000 then
          begin
            // Stampa il valore ASCII string dell'XData
            Writeln('    Value (ASCII string): ', XDataItem.StringValue);
          end;
        end;
      end
      else
      begin
        // Se non ci sono XData, stampa un messaggio
        Writeln('Entità ', i + 1, ': Nessun XData trovato.');
      end;

      // Aggiunge una riga vuota per separare le informazioni sulle entità
      Writeln;
    end;
  finally
    // Rilascia le risorse COM
    CoUninitialize;
  end;
end.         

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1266
  • Karma: +43/-0
  • Prima ascoltare, poi decidere
Re:Estrazione dati estesi(XData) da file dwg di AutoCad
« Risposta #1 il: Marzo 13, 2024, 02:30:34 pm »
Hai errori ? o hai risultati vuoti ?

Grossomodo quello che fai dovrebbe essere corretto. Fermo restando le proprietà e i metodi: ricordavo che ai miei tempi c'era il metodo GetXData ... o qualcosa di simile come ActiveX per rilevare l'elenco delle proprietà XData di un oggetto.

Poi, hanno mantenuto ancora gli XData, visto che Autocad non li ha mai usati ?

Ciao
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

alexarmato66

  • Full Member
  • ***
  • Post: 141
  • Karma: +1/-0
Re:Estrazione dati estesi(XData) da file dwg di AutoCad
« Risposta #2 il: Marzo 13, 2024, 03:10:27 pm »
Ho risultati vuoti.Dopo un pò il programma esce senza stampare alcun risultato.
« Ultima modifica: Marzo 13, 2024, 03:17:36 pm da alexarmato66 »

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1266
  • Karma: +43/-0
  • Prima ascoltare, poi decidere
Re:Estrazione dati estesi(XData) da file dwg di AutoCad
« Risposta #3 il: Marzo 13, 2024, 08:11:32 pm »
Confermo che devi usare GetXData e non XData, almeno per quanto vedo ... non c'è una proprietà o metodo chiamato XData.

Stò esplorando la TLB di ACAD 2018 (dovrebbe essere la tua versione).

Non ho Acad per provare.

EDIT: ... forse sono troppo avanti ... notare il 2038 .... ho come il sospetto che ci sarà a breve un grosso problema "universale" con lo UNIX TIME (si, è OT, ma quello quotato è la data di creazione della type library  ...)

Citazione
  custom(DE77BA65-517C-11D1-A2DA-0000F8773CE9, "Created by MIDL version 8.01.0620 at Mon Jan 18 19:14:07 2038
« Ultima modifica: Marzo 13, 2024, 09:39:10 pm da DragoRosso »
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

alexarmato66

  • Full Member
  • ***
  • Post: 141
  • Karma: +1/-0
Re:Estrazione dati estesi(XData) da file dwg di AutoCad
« Risposta #4 il: Marzo 14, 2024, 08:42:06 am »
Grazie , avevo dimenticato il Get.
In ogni caso ho un problema in
 // Creazione di un'istanza dell'applicazione AutoCAD
    AutoCADApp := CreateOleObject('AutoCAD.Application.22');   

HO cercato su internet e per autocad2018 devo mettere AutoCAD.Application.22.
Mah

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1266
  • Karma: +43/-0
  • Prima ascoltare, poi decidere
Re:Estrazione dati estesi(XData) da file dwg di AutoCad
« Risposta #5 il: Marzo 14, 2024, 11:37:27 am »
Ti confermo (vedi allegato).
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

alexarmato66

  • Full Member
  • ***
  • Post: 141
  • Karma: +1/-0
Re:Estrazione dati estesi(XData) da file dwg di AutoCad
« Risposta #6 il: Marzo 15, 2024, 08:13:15 am »
Purtroppo non mi funziona ancora.Il programma parte ma dopo un pò si spegne senza esiti.

 

Recenti

How To

Utenti
  • Utenti in totale: 785
  • Latest: gmax
Stats
  • Post in totale: 18770
  • Topic in totale: 2232
  • Online Today: 364
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 0
Guests: 352
Total: 352

Disclaimer:

Questo blog non rappresenta una testata giornalistica poiché viene aggiornato senza alcuna periodicità. Non può pertanto considerarsi un prodotto editoriale ai sensi della legge n. 62/2001.