Перейти к публикации

Рекомендованные сообщения

Сделал макрос под себя для заполнения рамки.

Посмотри темы: может и писать ничего не надо:

<noindex>http://fsapr2000.ru/index.php?showtopic=6622</noindex>

<noindex>http://fsapr2000.ru/index.php?showtopic=6071</noindex>

Ну и эту почитать.

Ссылка на сообщение
Поделиться на других сайтах


Добрый вечер. Помогите разобраться. Есть простая деталь в SolidWorks(вытянутый прямоугольник). Есть задача - нужно посредством API через Visual Studio(c++) изменять размеры прямоугольника который вытягиваем и длины, на которую вытягиваем. Нашел много примеров Visual Basic, там это реализовывается просто, мне кажется на с++ не сложнее, но ничего не получается. Гугл ничего толкового не дал, или я искать не умею...

Ссылка на сообщение
Поделиться на других сайтах

Dedg

Получаете COM object и с ним работайте

<noindex>http://help.solidworks.com/2012/english/ap...pplications.htm</noindex>

Получаете модель

Если размер надо выделить:

Получаете объект размера getselectedobject

Если надо найти по имени:

selectbyID

Изменяете value

как пример: <noindex>http://help.solidworks.com/2012/english/ap..._example_vb.htm</noindex>

Гугл ничего толкового не дал

Надо, не ... не так... НАДО ЧИТАТЬ ХЕЛП!!! во

Там есть всё.

Ссылка на сообщение
Поделиться на других сайтах

Получаете модель

Если размер надо выделить:

Получаете объект размера getselectedobject

Если надо найти по имени:

selectbyID

Изменяете value

как пример: <noindex>http://help.solidworks.com/2012/english/ap..._example_vb.htm</noindex>

Надо, не ... не так... НАДО ЧИТАТЬ ХЕЛП!!! во

Там есть всё.

Я видел этот пример, но там на VB. Вот тут то и возникла проблема. Я не могу понять как на С++ это записать

CoInitialize(NULL);

СComPtr<ISldWorks> swApp;

CComPtr<IModelDoc2> swModel;

а дальше загруз...

Set Dimension = Part.Parameter("XValue@Sketch1")

Dimension.SystemValue = XValue_Passed

Part.EditRebuild3

Какой аналог на С++? Изменено пользователем Dedg
Ссылка на сообщение
Поделиться на других сайтах

Dedg

а дальше собсно язык C++ )))

в том то и проблема(

основы по С++ есть, но вот с API не задалось.

Может кто знает, покажите пример, очень нужно. Заранее благодарен.

Ссылка на сообщение
Поделиться на других сайтах

Dedg

упорно не хотите читать ХЕЛП?

<noindex>http://help.solidworks.com/2012/english/ap...pplications.htm</noindex>

Запуск SW

CComPtr<ISldWorks> swApp;

	CComPtr<IModelDoc2> swModel;

	HRESULT hres = NOERROR;



	CoInitialize(NULL);

	hres = swApp.CoCreateInstance(__uuidof(SldWorks), NULL, CLSCTX_LOCAL_SERVER);

	hres = swApp->put_UserControl(VARIANT_TRUE);

	hres = swApp->put_Visible(VARIANT_TRUE);

	hres = swApp->get_IActiveDoc2(&swModel);

	CoUninitialize();

основы по С++ есть

Мало. Прочтите "Модель COM и применение ATL 3.0" Троельсена. Очень многое станет понятно. Достаточно просто прочитать)))
Ссылка на сообщение
Поделиться на других сайтах

Запуск SW

CComPtr<ISldWorks> swApp;

	CComPtr<IModelDoc2> swModel;

	HRESULT hres = NOERROR;



	CoInitialize(NULL);

	hres = swApp.CoCreateInstance(__uuidof(SldWorks), NULL, CLSCTX_LOCAL_SERVER);

	hres = swApp->put_UserControl(VARIANT_TRUE);

	hres = swApp->put_Visible(VARIANT_TRUE);

	hres = swApp->get_IActiveDoc2(&swModel);

	CoUninitialize();
а как открыть файл?

swModel = swApp->OpenDoc2(L"Путь:\\Деталь.SLDPRT", 1, false, false, false, false, 0); не работает, выдает ошибку

Изображение

Ссылка на сообщение
Поделиться на других сайтах

OpenDoc2(L"Путь:\\

)))) смешно

основы по С++ есть

продолжаем по основам "http://netcode.ru/cpp/?lang=&katID=6&skatID=55&artID=2475"

CComBSTR sCompName(L"c:\\sheet metal exam.SLDPRT");

hres = swApp->OpenDoc6(sCompName, swDocPART, swOpenDocOptions_Silent, sDefaultConfiguration, &lErrors, &lWarnings, &tmpObj);

swModel = swApp...

вы знаете же что такое указатели и ссылки? да?
Ссылка на сообщение
Поделиться на других сайтах

)))) смешно

я старался) я думаю Вы поняли у меня там полный путь прописан, а тут я просто указал что писать там буду)

продолжаем по основам "http://netcode.ru/cpp/?lang=&katID=6&skatID=55&artID=2475"

хм, я ж так и написал? нет?

не верится мне что так нужно

swApp->OpenDoc2(SysAllocString(L"C:\\Users\\Eclipse\\Desktop\\Деталь1.SLDPRT"), 1, false, false, false, false, 0);

CComBSTR sCompName(L"c:\\sheet metal exam.SLDPRT");

hres = swApp->OpenDoc6(sCompName, swDocPART, swOpenDocOptions_Silent, sDefaultConfiguration, &lErrors, &lWarnings, &tmpObj);
вы знаете же что такое указатели и ссылки? да?
функцию открытия OpenDoc2 брал с примера на VB и изменил(наверно не правильно) для С++...
Ссылка на сообщение
Поделиться на других сайтах

Dedg

возвращайте всё время HRESULT. Будете знать как именно вернулось))

По теме OpenDoc2:

IDispatch *tmpObj; //Искомая модель, как её привести к IModelDoc не знаю

hres = swApp->OpenDoc2(sCompName, swDocPART, VARIANT_FALSE, VARIANT_FALSE, VARIANT_TRUE, &lErrors, &tmpObj);
Честно, я первый раз открыл хелп на тексте "открыть документ в С++".

Вот только не спрашивайте теперь про IDispatch )))

VARIANT_FALSE - почему так, читать про модель COM)))

Ссылка на сообщение
Поделиться на других сайтах

Пример вытягивания прямоугольника... Начальные условия : должен быть открыт документ детали. Только пример.

#include "stdafx.h"



#import "sldworks.tlb" raw_interfaces_only, raw_native_types, no_namespace, named_guids  //the SolidWorks type library

#import "swconst.tlb"  raw_interfaces_only, raw_native_types, no_namespace, named_guids  //the SolidWorks constant type library



int _tmain(int argc, _TCHAR* argv[])

{

	HRESULT hres;

	CComBSTR message;

	long lres;



	CoInitialize(NULL);

	CLSID clsid;

	CLSIDFromProgID(L"SldWorks.Application", &clsid);

	

	ISldWorks *swApp;

	CoCreateInstance(clsid, NULL, CLSCTX_LOCAL_SERVER, __uuidof(ISldWorks), (void**)&swApp);

	if(swApp == NULL)

	{

		::CoUninitialize();

		return 1;

	}

	IModelDoc2 *swModel;

	hres = swApp->get_IActiveDoc2(&swModel);

	if(swModel == NULL)

	{

		message = L"Загрузите документ SolidWorks-а!";

		hres = swApp->SendMsgToUser2(message, swMbWarning, swMbOk, &lres);

		::CoUninitialize();

		return 1;

	}



	long docType;

	hres = swModel ->GetType(&docType);

	if(docType != swDocPART)

	{

		message = L"Функция работает только с документом детали (*.sldprt)!";

		hres = swApp->SendMsgToUser2(message, swMbWarning, swMbOk, &lres);

		::CoUninitialize();

		return 1;

	}

	IModelDocExtension *swModelExt;

	hres = swModel->get_Extension(&swModelExt);



	IFeatureManager *swFeatMgr;

	hres = swModel->get_FeatureManager(&swFeatMgr);



	ISketch *swSketch;

	hres = swModel->IGetActiveSketch2(&swSketch);



	VARIANT_BOOL bres;

	if(swSketch == NULL)

	{

		// здесь, в первом аргументе, ввести коррекное имя плоскости на которой будет рисоваться эскиз

		hres = swModelExt->SelectByID2(L"Font Plane", L"Plane", 0.0, 0.0, 0.0, VARIANT_FALSE, 0, NULL, swSelectOptionDefault, &bres);

		hres = swModel->InsertSketch2(VARIANT_TRUE);

	}



	ISketchManager *swSketchMgr;

	hres = swModel->get_SketchManager(&swSketchMgr);



	// рисуем прямоугольник со сторонами 200 х 150мм

	VARIANT vSketchSegment;

	hres = swSketchMgr->CreateCenterRectangle(0.0, 0.0, 0.0, 0.2, 0.125, 0, &vSketchSegment);



	// Вытягиваем этот прямоугольник на расстояние 50мм

	IFeature *swFeature;

	hres = swFeatMgr->FeatureExtrusion2(VARIANT_TRUE, VARIANT_FALSE, VARIANT_FALSE, swEndCondBlind, 0, 0.050, 0.0, 

										VARIANT_FALSE, VARIANT_FALSE, VARIANT_FALSE, VARIANT_FALSE, 0.0, 0.0,

										VARIANT_FALSE, VARIANT_FALSE, VARIANT_FALSE, VARIANT_FALSE,

										VARIANT_TRUE, VARIANT_FALSE, VARIANT_TRUE, 0, 0.0, VARIANT_FALSE, &swFeature);

	::CoUninitialize();

	return 0;

}
Ссылка на сообщение
Поделиться на других сайтах

Пример вытягивания прямоугольника... Начальные условия : должен быть открыт документ детали. Только пример.

#include "stdafx.h"



#import "sldworks.tlb" raw_interfaces_only, raw_native_types, no_namespace, named_guids  //the SolidWorks type library

#import "swconst.tlb"  raw_interfaces_only, raw_native_types, no_namespace, named_guids  //the SolidWorks constant type library



int _tmain(int argc, _TCHAR* argv[])

{

	HRESULT hres;

	CComBSTR message;

	long lres;



	CoInitialize(NULL);

	CLSID clsid;

	CLSIDFromProgID(L"SldWorks.Application", &clsid);

	

	ISldWorks *swApp;

	CoCreateInstance(clsid, NULL, CLSCTX_LOCAL_SERVER, __uuidof(ISldWorks), (void**)&swApp);

	if(swApp == NULL)

	{

		::CoUninitialize();

		return 1;

	}

	IModelDoc2 *swModel;

	hres = swApp->get_IActiveDoc2(&swModel);

	if(swModel == NULL)

	{

		message = L"Загрузите документ SolidWorks-а!";

		hres = swApp->SendMsgToUser2(message, swMbWarning, swMbOk, &lres);

		::CoUninitialize();

		return 1;

	}



	long docType;

	hres = swModel ->GetType(&docType);

	if(docType != swDocPART)

	{

		message = L"Функция работает только с документом детали (*.sldprt)!";

		hres = swApp->SendMsgToUser2(message, swMbWarning, swMbOk, &lres);

		::CoUninitialize();

		return 1;

	}

	IModelDocExtension *swModelExt;

	hres = swModel->get_Extension(&swModelExt);



	IFeatureManager *swFeatMgr;

	hres = swModel->get_FeatureManager(&swFeatMgr);



	ISketch *swSketch;

	hres = swModel->IGetActiveSketch2(&swSketch);



	VARIANT_BOOL bres;

	if(swSketch == NULL)

	{

		// здесь, в первом аргументе, ввести коррекное имя плоскости на которой будет рисоваться эскиз

		hres = swModelExt->SelectByID2(L"Font Plane", L"Plane", 0.0, 0.0, 0.0, VARIANT_FALSE, 0, NULL, swSelectOptionDefault, &bres);

		hres = swModel->InsertSketch2(VARIANT_TRUE);

	}



	ISketchManager *swSketchMgr;

	hres = swModel->get_SketchManager(&swSketchMgr);



	// рисуем прямоугольник со сторонами 200 х 150мм

	VARIANT vSketchSegment;

	hres = swSketchMgr->CreateCenterRectangle(0.0, 0.0, 0.0, 0.2, 0.125, 0, &vSketchSegment);



	// Вытягиваем этот прямоугольник на расстояние 50мм

	IFeature *swFeature;

	hres = swFeatMgr->FeatureExtrusion2(VARIANT_TRUE, VARIANT_FALSE, VARIANT_FALSE, swEndCondBlind, 0, 0.050, 0.0, 

										VARIANT_FALSE, VARIANT_FALSE, VARIANT_FALSE, VARIANT_FALSE, 0.0, 0.0,

										VARIANT_FALSE, VARIANT_FALSE, VARIANT_FALSE, VARIANT_FALSE,

										VARIANT_TRUE, VARIANT_FALSE, VARIANT_TRUE, 0, 0.0, VARIANT_FALSE, &swFeature);

	::CoUninitialize();

	return 0;

}
Этот вариант работает, но задача у меня немного не такая. Нужно изменять готовое. Мне кажется это можно сделать так:

hres = swModel->Parameter(L"D2@Эскиз1", IDispatch ** Retval);

IDispatch ** Retval - не пойму что тут писать и как задать нужный размер

возможно так?

IDispatch *swParameter;

hres = swModel->Parameter(L"D1@Эскиз1", &swParameter);

Но как поменять value..

hres = swParameter->

я хоть в том направлении иду? Изменено пользователем Dedg
Ссылка на сообщение
Поделиться на других сайтах

я хоть в том направлении иду?

Немного разобрался

IDimension *swParam;

long ret;

VARIANT_BOOL bre;

hres = swModel->IParameter(L"D1@Эскиз1", &swParam);

hres = swParam->SetSystemValue2(0.5, 0, &ret);

hres = swModel->ForceRebuild3(false, &bre);

не пойму только что хранят эти переменные

long ret;

VARIANT_BOOL bre;

Ссылка на сообщение
Поделиться на других сайтах

Немного разобрался

Примерно так. Только я чаще использую функцию SetValue3

Скрытый текст: Код

#include "stdafx.h"



#import "sldworks.tlb" raw_interfaces_only, raw_native_types, no_namespace, named_guids  //the SolidWorks type library

#import "swconst.tlb"  raw_interfaces_only, raw_native_types, no_namespace, named_guids  //the SolidWorks constant type library







int _tmain(int argc, _TCHAR* argv[])

{

	CLSID clsid;

	CLSIDFromProgID(L"SldWorks.Application", &clsid);

	HRESULT hres;



	CoInitialize(NULL);



	ISldWorks *swApp = NULL;

	::CoCreateInstance(clsid, NULL, CLSCTX_LOCAL_SERVER, __uuidof(ISldWorks), (void**)&swApp);



	if(swApp == NULL)

	{

		CoUninitialize();

		return 1;

	}

	hres = swApp->put_Visible(VARIANT_TRUE);



	CComBSTR bstrFileName(L"g:\\Part_Example.SLDPRT"); // это у меня для примера

	CComBSTR bstrConfig(L"Default"); // это у меня для примера



	long lError, lWarning;

	IModelDoc2* swModel = NULL;

	hres = swApp->OpenDoc6(bstrFileName, swDocPART, swOpenDocOptions_Silent, bstrConfig, &lError, &lWarning, &swModel);

	if(swModel == NULL)

	{

		CoUninitialize();

		return 1;

	}



	// Имена размеров прямоугольника..

	CComBSTR bstrWidth = L"D1@Sketch1";

	CComBSTR bstrHeight = L"D2@Sketch1";

	CComBSTR bstrLength = L"D1@Boss-Extrude1";



	// новые размеры прямоугольника

	double dWidth = 80.0;

	double dHeight = 90.0;

	double dLength = 150.0;



	CComBSTR configNames = L"";



	// ===  Изменение размеров детали =================

	try

	{

		long lres;

		IDimension* swDimension = NULL;

		hres = swModel->IParameter(bstrWidth, &swDimension);

		hres = swDimension->ISetValue3(dWidth, swSetValue_InAllConfigurations, 0, &configNames, &lres);



		hres = swModel->IParameter(bstrHeight, &swDimension);

		hres = swDimension->ISetValue3(dHeight, swSetValue_InAllConfigurations, 0, &configNames, &lres);



		hres = swModel->IParameter(bstrLength, &swDimension);

		hres = swDimension->ISetValue3(dLength, swSetValue_InAllConfigurations, 0, &configNames, &lres);				

	}

	catch(...){}

	// ===============================================



	VARIANT_BOOL bres;

	hres = swModel->EditRebuild3(&bres);



	hres = swModel->SetSaveFlag();



	CoUninitialize();

	return 0;

}
Ссылка на сообщение
Поделиться на других сайтах

как в c++ методами API открыть Solid Works

на delphi у меня запуск получается

strDir:string; // текущая директория программы

pFeature:variant; //

iFaceCount:integer; //

aArrToFaces:variant; //

vSelMng:variant;

vSelData:variant;

vEdgesArr:variant;

{-^main program^-}

begin

{ обработчик исключительных ситуаций для корректного запуска SW или

подключения к уже открытой сессии }

try

{ если SW уже запущен - то получаем указатель на сессию SW в

переменную swApp }

swApp:=GetActiveOleObject('SldWorks.Application');

except

{в обратном случаем - создаем новую сессию - и заносим указатель

на нее в переменную }

swApp:=CreateOleObject('SldWorks.Application');

end;

{ теперь можно обращаться к методам, которые инкапсулирет объект -

SldWorks OLE-сервера SW , например

swApp.<имя метода>([параметры метода - если есть]),

}

{получаем в пременную strDir - путь к директории, где запущена программа}

GetDir(0,strDir);

{ создаем новый документ SW типа "ДЕТАЛЬ" по шаблону, находящемуся в

текущей директории, по аналогии можно создавть документы типа "Сборка"

по шаблону в \..\SolidWorks\data\templates\Сборка.prtdot}

swApp.NewDocument(strdir+'\'+'Деталь.prtdot', 0, 0, 0);

{ свойство visible объекта SldWorks отвечает за видимость запущенной сессии

(процесса) SW - - true - отобразить SW }

swApp.visible:=true;

{ получаем указатель в ModDoc на текущий открытый документ - получаем возможность

работы с с методами объекта ModelDoc2 }

ModDoc:=swApp.ActiveDoc;

{ вставляем в текущий документ новый эскиз - вызов метода

объекта ModelDoc -> InsertSketch2 }

ModDoc.InsertSketch2(true);

как сделать так на С++

Ссылка на сообщение
Поделиться на других сайтах

dracondo

Элементарно))) Создать экземпляр, получить указатель и вставить функции из хелпа))

Создание обычного exe _http://help.solidworks.com/2013/English/api/sldworksapiprogguide/GettingStarted/CPP_.NET_Standalone_and_Add-in_Applications.htm?id=cfde5f40045246208143e62b1b02698c#Pg0

Ссылка на сообщение
Поделиться на других сайтах

Здравствуйте, а подскажите какой функцией отобразить конкретные скрытые размеры на чертеже. В справке по этому вопросу нашел только HideShowDimensions. Но это отображение ВСЕХ скрытых размеров, при чем, чтобы их отобразить необходимо повторно на них нажимать, а как просто отобразить конкретный скрытый размер на чертеже.

Ссылка на сообщение
Поделиться на других сайтах

NUMPL

Пример тут _http://help.solidworks.com/2011/English/api/sldworksapi/Show_Dimensions_in_Drawing_Sheet_Example_VB.htm

Основной смысл: размер в чертеже получать как Annotation и с ней работать

Set swAnn = swView.GetFirstAnnotation2

Do While Not Nothing Is swAnn

If swDisplayDimension = swAnn.GetType Then
_http://help.solidworks.com/2011/English/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.iannotation~visible.html

отобразить конкретный скрытый размер

нужно как минимум знать его имя, это можно сделать перебором. Допустим: вы получаете все аннотации на виде и вызываете Message с кнопками, если ОК - отобразить, если Cancel - то продолжить перебор.
Ссылка на сообщение
Поделиться на других сайтах

streamdown

Немного не сориентируюсь. Если имя размера на чертеже d1@эскиз1, то каким образом ему Visible прописать.

Sub main()Set swApp = Application.SldWorksSet Part = swApp.ActiveDocDim swModel As SldWorks.ModelDoc2Dim swView As SldWorks.ViewDim swAnn As SldWorks.AnnotationSet swAnn = swView.GetFirstAnnotation2Do While Not Nothing Is swAnn        If swDisplayDimension = swAnn.GetType Then            Debug.Print "    " & swAnn.GetName                    swAnn.Visible = swAnnotationVisible        End If             Set swAnn = swAnn.GetNext2    LoopEnd Sub

swAnn.Visible = true должна быть последняя фраза, как я понимаю, а swAnn должно должно соответствовать размеру d1@эскиз1.

На фразе Set swAnn = swView.GetFirstAnnotation2 выдает 91 ошибку

Object variable or With block variable not set

Изменено пользователем NUMPL
Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.



  • Сообщения

    • Snake 60
      Скорее всего исправляли в конкретной сборке, для конкретных тел. Насколько я помню, надо в самом эскизе профиля заполнить свойство Description
    • Snake 60
      Делаете дырку в свае - вставляете в нее трубу и 2 человеко-силы крутят сваю ) Дёшево и сердито и не нужен никакой планетарный редуктор ))
    • gudstartup
      вы всегда ищите свой путь или будете делать то что вам советуют? с самого начала прежде чем приступать к экспериментам вам нужно было вынуть носитель и сделать образ. diskcopy делает копию гибкого диска на другой а вам надо сделать образ жесткого диска или карты памяти. делайте как советует @Viktor2004 иначе еще чего нибудь сломаете или вам станок не нужен и вы его приобрели для экспериментов ? вот а печатной машинке из прошлого нельзя а вот на синумерике можно - удивительные вещи в настоящем происходят!! на 100 % уверен что там не модуль а либо писимиси ай либо жд @mircomax81 хотите работать в дос почитайте помощь по командам 
    • PuKoLLleT
      Доброго дня всем. Поделитесь опытом,раньше такое не доводилось делать. На торце фланца нужно сделать  восемь отверстий ф17H7 на токарно-фрезерном станке с осью Y ,имеется ManualGuide.В моем понимании нужно просверлить,а затем торцевой фрезой расточить нужный диаметр.Получится такой фокус,или надо разверткой доводить нужный размер?  Стойка Fanuc 0i-Tf.
    • Snake 60
      Всё верно, я даже русификатор делал для него (ушло на это где-то около года). Хороший софт был, я всех знакомых на него подсадил в свое время :) У меня даже где-то образ на виртуалке лежит с SW2014+MechSoft, Жаль, что автодеск его поглотил, а не DS :( А по сути вопроса, проектировал двухступенчатый планетарный редуктор в свое время. Что было нужно: Справочник по планетаркам (автора не помню, если надо поищу), из софта MathCAD + GearTeq (софтина идет вместе с GearTrax, только рассчитывает и моделирует несколько зацеплений согласно выбранной схеме, в том числе планетарки) Ой и ошибаетесь. Звездочки - не равно зубчатые колеса в планетарке) Мы намучились с малой точностью изготовления на эл.эрозии, а Вы лазером ))) Был собран опытный образец редуктора с незакаленными деталями, чисто проверить геометрию, отладить сборку. Так потом начальство этот редуктор сказало испытать в бою, как я не противился)) Помер за пару дней интенсивных нагрузок ))) Материал, термообработка и точности изготовления решают )
    • Snake 60
      @Тихоход  Ещё один вариант - изучать программирование и писать свою программу/макрос. Вот пример конфигуратора двери: https://www.youtube.com/watch?v=wv4HryWQBSk
    • mircomax81
      Посредством Diskcopy можно сделать адекватную копию на флоппи диск?
    • Andrey_kzn
      Да, ведь советовали автору вытащить жёсткий диск и сделать образ. Неужели самому не интересно, как устроен этот старый промкомпьютер? Там может стоять как жёсткий диск, так и CF-карта, или же Disc-on-chip или Disc-on-module.  Как-то очень давно, на подобном промышленном оборудовании (большая печатная машина) я не смог перенести  ПО с родной CF - карты на другую, такого же размера но другой фирмы. Была также станочная оболочка под досом.  Образ я делал Нортон гостом, развернул его на другую CF-карту без проблем. Машина загрузилась нормально и работала ровно 2 дня, на неродной CF-карте,  потом зависла, и отказалась загружаться. Пришлось вызывать сервисника. От него мы узнали, что нельзя просто так взять и заменить карту  - носитель системного ПО, на другую. А полезли мы туда, так как руководство захотело печатать отчёты по работе машины. В станочном ПО такая функция была. Вот только принтер надо было купить у фирмы - производителя этой самой машины. В попытках заставить работать другой принтер мы редактировали файл  AUTOEXEС.BAT, на предмет загрузки драйвера принтера, ничего не получилось, зато перестали открываться некоторые страницы станочного ПО.  Образ у нас был давно снят, и мы развернули его на другую карту памяти. Родную карту я трогать не стал (как чувствовал, что нельзя ). Сервисник восстановил ПО с архивной дискеты на родную карту памяти, и всё заработало. Дискеты с архивами ПО шли вместе с документацией к машине.  Там были дискеты с Досом, станочной оболочкой, параметрами приводов, программой ПЛК. Он же и предупредил нас о предельно аккуратном обращении с родной картой памяти, и посоветовал немедленно сделать образы с архивных дискет, что мы сразу и проделали.. Вот такой сюрприз от машины эпохи Дос.
    • Борман
    • gudstartup
      а ведь все работало...
×
×
  • Создать...