Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [База данных] Детали для AutoCAD , нужны советы 
:(
    Опции темы
headzero
Дата 5.10.2007, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 14.11.2006

Репутация: нет
Всего: 1



Проблемы следующая.
Требуется создать программу с базой данных которая хранит информацию о радотехнических деталях и их чертежи в формате Autocad(именно Autocad!!!). Пользователь вводит название детали и ее размеры. Если таковая имеется, на экран выводится вся инфа о детали и (можно в отдельном окне) ее чертеж в трехмерном виде. Должна быть возможность просмотра чертежа во всех проекциях.
У меня вопросы:
1. Какую БД лучше использовать?
2. Как проще всего создать UI?
3. Помогите кто знает программинг под Autocad, как вывести чертеж в отдельном окне. Нужно ли чертеж перед этим преобрпзовать в bitmap? Как реализовать показ всех проекций в том же окне?Я предполагаю, надо добавить 4 кнопки,каждая из которых обновляла бы картинку на картинук с соотв. проекцией.

P.S.Я понимаю, Java + Oracle или ADO.NET + SM SQL SERVER - это ,конечно круто  smile  ,но чем я буду ползоваться, для заказчика(моего препода smile ) не имеет значения(как я понял но в программировании полный zero, главное,чтобы работало), поэтому предложите самы простые варианты(скриптовые языки, какие либо конструкторы) все подойдет. Может єто можно релизовать прямо в MS Access?
Буду рад любым идеям и подсказкам по даным вопросам. Спасибо.


Это сообщение отредактировал(а) headzero - 5.10.2007, 14:35


--------------------
Воображение важнее знания
                                                     (Алберт Эйнштейн)
PM MAIL   Вверх
Zyava
Дата 5.10.2007, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 14.10.2006

Репутация: нет
Всего: нет



Предпросмотр dwg файлов на Делфи:
Код

unit DwgPreview;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, ExtCtrls;

type
  TDwgPreview = class(TImage)
  private
    FFileName: string;
    procedure SetFileName(Value: string);
    procedure ImportDwgThumbnail(DWGFileName: string);
  protected
    { Protected declarations }
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    property FileName: string read FFileName write SetFileName;
  end;

procedure Register;

implementation

constructor TDwgPreview.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
end;

destructor TDwgPreview.Destroy;
begin
  inherited Destroy;
end;

procedure TDwgPreview.SetFileName(Value: string);
begin
  FFileName := Value;
  ImportDwgThumbnail(pchar(Value));
end;

procedure TDwgPreview.ImportDwgThumbnail(DWGFileName: string);
const
  ImageSentinel: array[0..15] of Byte =
  ($1F, $25, $6D, $07, $D4, $36, $28, $28, $9D, $57, $CA, $3F, $9D, $44, $10,
    $2B);
type
  TDwgFileHeader = packed record
    Signature: array[0..5] of Char;
    Unused: array[0..6] of Char;
    ImageSeek: LongInt;
  end;
var
  DwgFile: file;
  StoreFileMode: Byte;
  DwgFileHeader: TDwgFileHeader;
  DwgSentinelData: array[0..15] of Byte;

  function LoadBMPData(const BitmapInfo: PBitmapInfo): Boolean;
  var
    BitmapHandle: HBITMAP;
    Bits: Pointer;
    NumColors: Integer;
    DC: HDC;

    function GetDInColors(BitCount: Word): Integer;
    begin
      case BitCount of
        1, 4, 8: Result := 1 shl BitCount;
      else
        Result := 0;
      end;
    end;

  begin
    Result := False;
    DC := GetDC(0);
    if DC = 0 then
      Exit;
    try
      with BitmapInfo^ do
      begin
        NumColors := GetDInColors(bmiHeader.biBitCount);
        Bits := Pointer(Longint(BitmapInfo) + SizeOf(bmiHeader) + NumColors *
          SizeOf(TRGBQuad));
      end;
      BitmapHandle := CreateDIBitmap(DC, BitmapInfo.bmiHeader, CBM_INIT, Bits,
        BitmapInfo^, DIB_RGB_COLORS);
      if BitmapHandle <> 0 then
      begin
         inherited Picture.Bitmap.Handle := BitmapHandle;
         inherited Show;
        Result := True;
      end;
    finally
      ReleaseDC(0, DC);
    end;
  end;


  procedure ProcessImageData;
  type
    TImageDataHeader = packed record
      TotalCount: LongInt;
      ImagesPresent: Byte;
    end;
    TImageDataRecord = packed record
      DataType: Byte;
      StartOfData: LongInt;
      SizeOfData: LongInt;
    end;
  var
    ImageHeader: TImageDataHeader;
    ImageRecord: TImageDataRecord;
    BMPData, WMFData: TImageDataRecord;
    ThumbData: Pointer;
  begin
    BlockRead(DwgFile, ImageHeader, SizeOf(ImageHeader));
    if ImageHeader.TotalCount + FilePos(DwgFile) > FileSize(DwgFile) then
      Exit;
    FillChar(BMPData, SizeOf(BMPData), 0);
    FillChar(WMFData, SizeOf(WMFData), 0);
    while (IOResult = 0) and (ImageHeader.ImagesPresent > 0) do
    begin
      BlockRead(DwgFile, ImageRecord, SizeOf(ImageRecord));
      if (IOResult <> 0) or (ImageRecord.StartOfData > FileSize(DwgFile)) then
        Break;
      case ImageRecord.DataType of
        2: BMPData := ImageRecord;
        3: WMFData := ImageRecord;
      end;
      Dec(ImageHeader.ImagesPresent);
    end;
    if BMPData.StartOfData > 0 then
      ImageRecord := BMPData
    else
      Exit;
    Seek(DwgFile, ImageRecord.StartOfData);
    GetMem(ThumbData, ImageRecord.SizeOfData);
    BlockRead(DwgFile, ThumbData^, ImageRecord.SizeOfData);
    try
        LoadBMPData(ThumbData);
    finally
      FreeMem(ThumbData);
    end;
  end;

begin
  Visible:=False;
  StoreFileMode := FileMode;
  FileMode := 0;
  System.Assign(DwgFile, DWGFileName);
  Reset(DwgFile, 1);
  FileMode := StoreFileMode;
  if IOResult <> 0 then
    Exit;
  try
    BlockRead(DwgFile, DwgFileHeader, SizeOf(DwgFileHeader));
    if (IOResult = 0) and (Copy(DwgFileHeader.Signature, 1, 4) = 'AC10') and
      (DwgFileHeader.ImageSeek <= FileSize(DwgFile)) then
    begin
      Seek(DwgFile, DwgFileHeader.ImageSeek);
      BlockRead(DwgFile, DwgSentinelData, SizeOf(DwgSentinelData));
      if (IOResult = 0) and CompareMem(@DwgSentinelData, @ImageSentinel,
        SizeOf(DwgSentinelData)) then
        ProcessImageData;
    end;
  finally
    Close(DwgFile);
  end;
end;

procedure Register;
begin
  RegisterComponents('Acad', [TDwgPreview]);
end;

end.

Также есть просмотрщики dwg файлов, которые ты можешь прикрутить к своей программе
http://www.moon-sun.com/ware/cad/dwgprevw/dwgprevw.htm
http://wincmd.ru/plugring/rudwgpreview.html
(последний - это плагин к тоталкоммандеру)
Почитать о программировании под Акад можно в этих книгах (исходник вверху из нее, также один из авторов книгах является автором того плагина для тотала smile )
6259. Сергей Зуев, Н. Полещук САПР на базе AUTOCAD - Том1.pdf    54,43 MB    2004-09-21    069558cb
http://ihtik.2x4.ru/complit_22janv2007/com...nv2007_6259.rar
6260. Сергей Зуев, Н. Полещук САПР на базе AUTOCAD - Том2.pdf    100,17 MB    2004-09-21    bd8e6207
http://ihtik.2x4.ru/complit_22janv2007/com...nv2007_6260.rar

Т.к. в книге примеры приводятся на делфи - то проще всего для создания пользовательского интерфейса его и использовать, базу можно почти любую использовать - БДЕ поддерживает много видов баз, тут выбирай какая тебе более привычна...
PM MAIL   Вверх
headzero
Дата 5.10.2007, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 14.11.2006

Репутация: нет
Всего: 1



Cпасибо,но с Делфи я не знаком вообще. Как на счет VBA? Подскажите кто программировал на этом языке. С чего начать?


--------------------
Воображение важнее знания
                                                     (Алберт Эйнштейн)
PM MAIL   Вверх
danik
Дата 8.5.2008, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 22.2.2007

Репутация: нет
Всего: нет



Вопрос актуален. Может был у кого-нибудь опыт в работе со связкой "Java-COM-AutoCAD". Если да, то подсобите, чем сможете: ссылками, литературой, исходниками, добрым советом (:
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0635 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.