Как перемеÑтит объекты HPGL
Moderators: SDS, support, admin
Как перемеÑтит объекты HPGL
Доброго днÑ! Помогите пожалуйÑта.
Стоит Ñ‚Ð°ÐºÐ°Ñ Ð·Ð°Ð´Ð°Ñ‡Ð°: повернуть изображение по чаÑовой Ñтрелке на 90 градуÑов.
Формат файла PLT. Я так понимаю вÑе объекты HPGL имеют тип TsgFlatPoly. Работаю в C++Builder 5.0.
Отображаю на Ñтандартный TImage. Вот код:
Hpgl2::TsgHPGLImage* mHPGL = dynamic_cast<Hpgl2::TsgHPGLImage*> (mImage->Picture->Graphic);
Dxfconv::TsgDXFConverter* mConv = mHPGL->Converter;
Dxfconv::TsgFlatPoly * mPoly;
int nHeight = mImage->Picture->Graphic->Height,
nWidth = mImage->Picture->Graphic->Width;
// Перебираем вÑе объекты
for(int nEntNum = 0; nEntNum < mConv->Counts[csEntities]; nEntNum++)
{
// ЕÑли не TgsFlatPoly, значит ошибка
if (mConv->Entities[nEntNum]->ClassType() != __classid(TsgFlatPoly))
{
Application->MessageBox(AnsiString("ÐеизвеÑтный тип векторного объекта: " +
mConv->Entities[nEntNum]->ClassName()).c_str(), "Предупреждение", MB_ICONINFORMATION | MB_OK);
continue;
}
mPoly = dynamic_cast<Dxfconv::TsgFlatPoly *> (mConv->Entities[nEntNum]);
// ИзменÑем вÑе координаты объекта
for(int nPointNum = 0; nPointNum < mPoly->PCount(); nPointNum++)
mPoly->XY[nPointNum] = MakeFPoint(nHeight - mPoly->XY[nPointNum].Y, mPoly->XY[nPointNum].X, 0);
// ОбновлÑем объект
mConv->Loads(mPoly);
mHPGL->GetExtents();
}
При выполнении кода изображение проÑто пропадает. Ðо где ошибка? Пробовал отображать на ваш TsgImage, но результат такой же.
Стоит Ñ‚Ð°ÐºÐ°Ñ Ð·Ð°Ð´Ð°Ñ‡Ð°: повернуть изображение по чаÑовой Ñтрелке на 90 градуÑов.
Формат файла PLT. Я так понимаю вÑе объекты HPGL имеют тип TsgFlatPoly. Работаю в C++Builder 5.0.
Отображаю на Ñтандартный TImage. Вот код:
Hpgl2::TsgHPGLImage* mHPGL = dynamic_cast<Hpgl2::TsgHPGLImage*> (mImage->Picture->Graphic);
Dxfconv::TsgDXFConverter* mConv = mHPGL->Converter;
Dxfconv::TsgFlatPoly * mPoly;
int nHeight = mImage->Picture->Graphic->Height,
nWidth = mImage->Picture->Graphic->Width;
// Перебираем вÑе объекты
for(int nEntNum = 0; nEntNum < mConv->Counts[csEntities]; nEntNum++)
{
// ЕÑли не TgsFlatPoly, значит ошибка
if (mConv->Entities[nEntNum]->ClassType() != __classid(TsgFlatPoly))
{
Application->MessageBox(AnsiString("ÐеизвеÑтный тип векторного объекта: " +
mConv->Entities[nEntNum]->ClassName()).c_str(), "Предупреждение", MB_ICONINFORMATION | MB_OK);
continue;
}
mPoly = dynamic_cast<Dxfconv::TsgFlatPoly *> (mConv->Entities[nEntNum]);
// ИзменÑем вÑе координаты объекта
for(int nPointNum = 0; nPointNum < mPoly->PCount(); nPointNum++)
mPoly->XY[nPointNum] = MakeFPoint(nHeight - mPoly->XY[nPointNum].Y, mPoly->XY[nPointNum].X, 0);
// ОбновлÑем объект
mConv->Loads(mPoly);
mHPGL->GetExtents();
}
При выполнении кода изображение проÑто пропадает. Ðо где ошибка? Пробовал отображать на ваш TsgImage, но результат такой же.
Доброго Ð´Ð½Ñ Ñуток!
<blockquote id="quote"><font size="2" face="Verdana, Arial, Helvetica" id="quote">quote:<hr height="1" noshade id="quote">Стоит Ñ‚Ð°ÐºÐ°Ñ Ð·Ð°Ð´Ð°Ñ‡Ð°: повернуть изображение по чаÑовой Ñтрелке на 90 градуÑов.<hr height="1" noshade id="quote"></font id="quote"></blockquote id="quote">
Ð’ÑÑ‘ значительно проще. Попробуйте Ñледующую конÑтрукцию:
<b>Unit1.h</b>:
<b>Unit1.cpp</b>:
<blockquote id="quote"><font size="2" face="Verdana, Arial, Helvetica" id="quote">quote:<hr height="1" noshade id="quote">Формат файла PLT. Я так понимаю вÑе объекты HPGL имеют тип TsgFlatPoly.<hr height="1" noshade id="quote"></font id="quote"></blockquote id="quote">
Ðто не ÑовÑем так. Ð’ ÑвÑзи Ñ Ñ‚ÐµÐ¼, что формат HPGL/HPGL2 неÑколько проще формата DWG/DXF, были введены клаÑÑÑ‹ TsgFlatHatch и TsgFlatPoly. Они позволили значительно уменьшить Ñ‚Ñ€ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ занимаемой оперативной памÑти (на многих файлах разница оказалаÑÑŒ равной до 20 раз) при загруженном HPGL/HPGL2 файле.
<b>English</b>:
The speech goes about how to rotate loaded PLT file. Code above views how it can be done.
Sergey.
Please post questions to the forum or write to support@cadsofttools.com
<blockquote id="quote"><font size="2" face="Verdana, Arial, Helvetica" id="quote">quote:<hr height="1" noshade id="quote">Стоит Ñ‚Ð°ÐºÐ°Ñ Ð·Ð°Ð´Ð°Ñ‡Ð°: повернуть изображение по чаÑовой Ñтрелке на 90 градуÑов.<hr height="1" noshade id="quote"></font id="quote"></blockquote id="quote">
Ð’ÑÑ‘ значительно проще. Попробуйте Ñледующую конÑтрукцию:
<b>Unit1.h</b>:
Code: Select all
...
<font color="green">#include <SGImage.hpp>
#include <HPGL2.hpp></font id="green">
...
<b>class</b> TForm1 : <b>public</b> TForm
{
<b>__published</b>: // IDE-managed Components
...
TButton *btnOpen;
TsgImage *sgImage1;
...
Code: Select all
...
<b>void __fastcall</b> TForm1::btnRotateClick(TObject *Sender)
{
TsgHPGLImage *sgDXFImage = NULL;
sgDXFImage = <b>dynamic_cast</b><TsgHPGLImage *>(sgImage1->Picture->Graphic);
sgDXFImage->Rotate(axisZ,90);
}
Ðто не ÑовÑем так. Ð’ ÑвÑзи Ñ Ñ‚ÐµÐ¼, что формат HPGL/HPGL2 неÑколько проще формата DWG/DXF, были введены клаÑÑÑ‹ TsgFlatHatch и TsgFlatPoly. Они позволили значительно уменьшить Ñ‚Ñ€ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ занимаемой оперативной памÑти (на многих файлах разница оказалаÑÑŒ равной до 20 раз) при загруженном HPGL/HPGL2 файле.
<b>English</b>:
The speech goes about how to rotate loaded PLT file. Code above views how it can be done.
Sergey.
Please post questions to the forum or write to support@cadsofttools.com