Перейти к содержанию

Перевод .NET библиотек с NC 5.1 на NC 21


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

Покупаем 21 и переходим на него с 5.1 версии.

1 вопрос: Какой Framework использует NC 21?

Ссылка на сообщение
Поделиться на другие сайты
26 минут назад, Robink сказал:

Какой Framework использует NC 21?

С мультикадом 4.5 минимум

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

Без мультикада голая платформа кажется 4.3 достаточно, если критично завтра уточню

добавлено через 1 минуту
29 минут назад, Robink сказал:

Teigha

Думаю что тоже 4.3 

дома не стоит

Самый требовательный мультикад

добавлено через 4 минут

Скачай сдк и методом интерполяции от минимального фреймворка собирай хеловорд

Как соберется, значит мин фреймворк найден))

добавлено через 6 минут

Обманул тебя..

Для голой релизной платформы нано 21 4.0 достаточно

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

Да. 4.5. 100500 ошибок только :) Проект большой.

Ссылка на сообщение
Поделиться на другие сайты
5 минут назад, Robink сказал:

Да. 4.5.

только если подключаешь библиотеки мультикад

mapibasetypes.dll
mapimgd.dll

без них 4.0 должно вполне хватить

по крайней мере у меня на простых операциях с примитивами кад... хватает 4.0

------------

выноски таблицы и прочие плюшки это мультикад, там только 4,5

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

@doctorraz всё верно написал, MultiCAD.NET на 4.5, остальное на 4.0.

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

Имхо на самом деле некритично

Поясню.

Нано самый простой дистрибутив идет с СПДС и Механикой, т.е. без фрэймворка 4.5 просто не встанет, т.е. у юзера де факто стоит 4.5, поэтому можно не париться и собирать на 4.5.

 

 

И даже если выпилить из дистрибутива спдс с механикой..

Останутся таблицы и выноски... это мультикад, фрэмворк 4.5

 

Но если надо слоев добавить, блоки перетусовать отрезки перкрасить ... работа чисто с объектами платформы, фрэймворка 4.0 за глаза. 

Как то так понимаю

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

Собрал. Много с чем надо разбираться.

Не работает

public override hresult OnEvent(Events ev, object param)

у мультикадовских CustomEntity

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

public override hresult OnEvent(Events ev, object param)

Ну как, он должен запускаться когда с объектом что то происходит, там много разных вариантов может быть, это внутри процедуры уже проверяется, какое именно событие произошло. Он не запускается например при копировании и вставки копии объекта. Исключений не происходит. Точку остановки ставил так и понял, что оно не запускается в принципе. Проверял другое событие, там все останавливается. В 5.1 все работало. У меня перестали обрабатываться скопированные объекты, в отличие от 5.1.

Изменено пользователем Robink
Ссылка на сообщение
Поделиться на другие сайты
Ссылка на сообщение
Поделиться на другие сайты
3 минуты назад, sea сказал:

Теперь событие transferred приходит в OnEventEx.

Он в какой библиотеке? Можно пример кода?

добавлено через 0 минут

Не обязательно, кстати Transfered.

Ссылка на сообщение
Поделиться на другие сайты
6 минут назад, sea сказал:

Рядом - McCustomBase.OnEventEx

Есть Enum EventEx. Что то не могу найти OnEventEx. 

добавлено через 4 минут

там два объекта в параметрах

public override hresult OnEventEx(EventsEx ev, object param1, object param2)

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

Это сделал.

Следующий вопрос:

ObjectFilter он по умолчанию все объекты ищет (в том числе обычные примитивы)?

Насколько помню он начинал искать все если параметр AllObjects=true.

Можно его заставить искать только McEntity?

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

Можно. Выбор вставок блока с текущего листа:

	ObjectFilter flt = new ObjectFilter();
	objFilter.SetCurrentSheet();
	flt.AddType(McBlockRef.TypeID);

 

Ссылка на сообщение
Поделиться на другие сайты
1 час назад, sea сказал:

Можно. Выбор вставок блока с текущего листа:

ObjectFilter flt = new ObjectFilter(); objFilter.SetCurrentSheet(); flt.AddType(McBlockRef.TypeID);


	ObjectFilter flt = new ObjectFilter();
	objFilter.SetCurrentSheet();
	flt.AddType(McBlockRef.TypeID);

 

of.AllObjects = false;

теперь не работает просто?

Это в кучу проблем выливается.

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

Посмотрел сколько раз в коде встречается вызов ObjectFilter, получилось 62 раза. Совсем грустно все это переделывать.

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

Robink,

Начиная с версии 5.1 (а сейчас уже 13.5) в API было внесено много изменений. Некоторые из них принципиальные. И старый код без правок работать не будет. Так получилось не из прихоти нашей, а из необходимости.

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

 

Ссылка на сообщение
Поделиться на другие сайты
4 часа назад, AGL сказал:

Robink,

Начиная с версии 5.1 (а сейчас уже 13.5) в API было внесено много изменений. Некоторые из них принципиальные. И старый код без правок работать не будет. Так получилось не из прихоти нашей, а из необходимости.

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

 

Проблема в том, что теперь ObjectFilter, набирает не только McEntity, но и стандартные объекты, раньше для такого поведения надо было поднять флаг AllObjects = true. Собственно теперь в перебор попадают стандартные объекты, что вызывает ошибки.

Ссылка на сообщение
Поделиться на другие сайты
19 часов назад, AGL сказал:

Дайте пример кода. в котором вы настраиваете фильтр и получаете все объекты из чертежа.

var of = new ObjectFilter();            
var ids = of.GetObjects();

 

Дальнейшее изучение вопроса показало, что ObjectFilter работает как и ранее, но видимо в нем баг. Запуск процедуры происходит по событию, когда объект выбран, а графика объекта (СustomEntity) состоит из одной полилинии, вот она как раз и попадает в набор.

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

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

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

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

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

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

Загрузка...
  • Расскажите друзьям

    Нравится Официальный форум компании Нанософт? Расскажите друзьям!
×
×
  • Создать...