Jump to content

Масштаб оформления


Recommended Posts

Никак не могу сообразить как сабж установить программно. Допустим после установки nanoCAD по умолчанию в новом чертеже имеем 1:100. А если надо 2:1 или 1:1 ?

Link to comment
Share on other sites

В nanoCAD используется система аннотативных масштабов, доступная через MultiCAD.NET API:

McObjectManager.CurrentStyle.Scale

Нужно включить в проект ссылку на mapimgd.dll.

AnnScale.png

Link to comment
Share on other sites

Крыша поехала от обилия информации. MultiCAD + .NET + Delphi + Microsoft Visual Studio. Делфи для .NET это плагин для MVS, и множество иных нюансов. Да и типа не всякий MVS для WinXP годен, опять же serial key найти нужно. Тупое конвертирование mcsAddin.h в mcsAddin.pas не канает, много дополнительных *.h подключено.

 

Блин, на LISP'е не получилось. Delphi & OLE тоже не помогло. В третий раз надо пробовать Автокадовский Лисп адаптировать под Нанокад. Це крик души, не обращать внимание.

 

Короче, вопрос. Сможет ли дельфиец, установивший Visual Studio Test Professional 2010, опираясь на nanoSDK что-нибудь сваять? Никогда на Си не писал, можно привести пример изменения масштаба?

Link to comment
Share on other sites

  • 3 weeks later...

Что-то не получается с McObjectManager.CurrentStyle.Scale. Кое-как скомпилировал библиотеку классов. При запуске всегда получаю Scale = 1. Даже если вручную ставлю, к примеру, М4:1.

namespace ClassLibrary1
{
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Teigha.DatabaseServices;
using Teigha.Runtime;
using Teigha.Geometry;
using HostMgd.ApplicationServices;
using HostMgd.EditorInput;
using Platform = HostMgd;
using PlatformDb = Teigha;
using Multicad;
using Multicad.DatabaseServices;
public class Class1
{
	[CommandMethod("Test")]
	public void Test()
	{
		string MessageString = "Попытка установки масштаба";
		Editor ed = Platform.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
		ed.WriteMessage(MessageString);
		double ScaleDwg = McObjectManager.CurrentStyle.Scale;
		ed.WriteMessage("Текущий масштаб: " + ScaleDwg);
		ScaleDwg = .25;
		McObjectManager.CurrentStyle.Scale = ScaleDwg;
		ed.WriteMessage("А сейчас масштаб: " + McObjectManager.CurrentStyle.Scale);
	}
}
}

Edited by sandymen
Link to comment
Share on other sites

Что-то не получается с McObjectManager.CurrentStyle.Scale. Кое-как скомпилировал библиотеку классов. При запуске всегда получаю Scale = 1. Даже если вручную ставлю, к примеру, М4:1.

namespace ClassLibrary1
{
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Teigha.DatabaseServices;
using Teigha.Runtime;
using Teigha.Geometry;
using HostMgd.ApplicationServices;
using HostMgd.EditorInput;
using Platform = HostMgd;
using PlatformDb = Teigha;
using Multicad;
using Multicad.DatabaseServices;
public class Class1
{
	[CommandMethod("Test")]
	public void Test()
	{
		string MessageString = "Попытка установки масштаба";
		Editor ed = Platform.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
		ed.WriteMessage(MessageString);
		double ScaleDwg = McObjectManager.CurrentStyle.Scale;
		ed.WriteMessage("Текущий масштаб: " + ScaleDwg);
		ScaleDwg = .25;
		McObjectManager.CurrentStyle.Scale = ScaleDwg;
		ed.WriteMessage("А сейчас масштаб: " + McObjectManager.CurrentStyle.Scale);
	}
}
}

У меня такое подозрение, что значение обновляется, при добавлении хотя бы одного объекта. На .Net получаю тот же масштаб через db.Cannoscale.Scale. Работает, когда работаю над проектом. В пустом документе возвращает 1.

Link to comment
Share on other sites

Сейчас попробовал. В пустом документе всегда 1, что только не делал. В другом документе всегда 0,02 (1:50). Поменять во втором так и не смог.

Link to comment
Share on other sites

"Даже если вручную ставлю, к примеру, М4:1."

 

У вас выполняется эта команда, вы в дебагере ставили там брекпоинт, заходит туда?

 

По идее в атрибуте у вас не хватает флага CommandFlags.NoCheck что бы команда успешно зарегистрировалась, и я бы рекомендовал вам назвать команду посложнее testScale например.

 

Вот вы написали M4:1 "M" - большое, вероятно вы выбрали машиностроительный режим нанокада?

Там где вы вручную задаете масштаб, в меню внизу галочка стоит у "Масштаб символов" или "Масштаб измерений" ?

 

В нанокаде 2 масштаба, масштаб элементов оформления и масштаб модели.

 

Концепция такова:

в машиностроительном обычно рисуют деталь в нужном масштабе, а элементы оформления - 1:1

в строительной области рисуют чертеж 1:1 а оформление делают в нужном масштабе.

Бывает используют оба одновременно, поэтому нужны оба отдельно.

 

Так вот:

McObjectManager.CurrentStyle.Scale - масштаб элементов оформления (например m100:1)

McObjectManager.CurrentStyle.MeasureScale - масштаб измерений. (например M4:1)

 

 [CommandMethod("TestScl", CommandFlags.NoCheck | CommandFlags.NoPrefix)]
 public void TestScl()
 {
  double ScaleDwg = McObjectManager.CurrentStyle.MeasureScale .Scale;
  ScaleDwg = .25;
  McObjectManager.CurrentStyle.Scale = ScaleDwg;
 }

Работает прекрасно.

Link to comment
Share on other sites

Уря-я. Работает. Действительно, мне необходимо было изменять масштаб оформления, а рисовать всегда 1:1. Но вопрос остался открытым. Если по умолчанию в наноКАДе будет стоять какой-либо масштаб объектов (с большой "М"), то код не работает.

Link to comment
Share on other sites

Проблему выбора масштаба объектов или масштаба оформления решил с помощью McObjectManager.CurrentStyle.IsMeasurementScalingMode.

[CommandMethod("TestScl")]
    public void TestScl()
    {
	    McObjectManager.CurrentStyle.IsMeasurementScalingMode = false;
	    double ScaleDwg = McObjectManager.CurrentStyle.Scale;
	    ScaleDwg = .25;
	    McObjectManager.CurrentStyle.Scale = ScaleDwg;
    }

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Tell a friend

    Love Официальный форум компании Нанософт Разработка? Tell a friend!
×
×
  • Create New...