Re: Нажатие кнопок в Jig...
Масштабы фиксированные (т.е. только те, что у тебя перечислены)?
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → .NET → Нажатие кнопок в Jig...
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Масштабы фиксированные (т.е. только те, что у тебя перечислены)?
Масштабы фиксированные (т.е. только те, что у тебя перечислены)?
Фиксированы. Я взял масштабы для примера.
У нас в строительстве действует система гостов на оформление проектной документации, СПДС называется. Там есть ГОСТ 2.302-68 "Масштабы".
Полный перечень такой: 2, 2.5, 4, 5, 10, 15, 20, 25, 40, 50, 75, 100, 200, 400, 500, 800, 1000.
Практически используются: 5, 10, 15, 20, 25, 50, 100.
И еще, я думал такое поведение удобнее при вставке таблицы.
Но, возможно, правильнее сделать ключевое слово [Масштаб] и при его выборе делать доп.запрос строки (т.к. запроса числа в джиге нет, по-моему), в котором уже вывести ключевые слова заданных масштабов. Может переделаю.
upd Про запрос числа. Наверно можно использовать AcquireDistance.
upd Про запрос числа. Наверно можно использовать AcquireDistance.
Можно. В данном случае наверное не следует.
Можно. В данном случае наверное не следует.
Попробовал сделать AcquireDistance (запрос в запросе), не получилось.
Т.е. "наверное не следует" потому что фиг сделаешь, так надо понимать :D
Вот пример запроса AcquireDistance внутри запроса AcquirePoint, при выборе ключевого слова Масштаб:
protected override SamplerStatus Sampler(JigPrompts prompts) { JigPromptPointOptions optPoint = new JigPromptPointOptions("Укажите точку вставки таблицы:"); optPoint.Keywords.Add("Масштаб"); PromptPointResult resPoint; do { resPoint = prompts.AcquirePoint(optPoint); switch (resPoint.Status) { case PromptStatus.Cancel: return SamplerStatus.Cancel; case PromptStatus.Keyword: if (resPoint.StringResult == "Масштаб") { JigPromptDistanceOptions optDist = new JigPromptDistanceOptions("Укажите масштаб таблицы:"); optDist.Keywords.Add("1"); optDist.Keywords.Add("5"); optDist.Keywords.Add("10"); optDist.Keywords.Add("15"); optDist.Keywords.Add("20"); optDist.Keywords.Add("25"); optDist.Keywords.Add("50"); optDist.Keywords.Add("100"); PromptDoubleResult resDist = prompts.AcquireDistance(optDist); if (resDist.Status == PromptStatus.OK) { _scale = resDist.Value; } } break; case PromptStatus.OK: if (_cpos.DistanceTo(resPoint.Value) < 0.001) return SamplerStatus.NoChange; break; } } while (resPoint.Status == PromptStatus.Keyword); _cpos = resPoint.Value; return SamplerStatus.OK; }
При выборе ключевого слова, во время запроса точки, не происходит запроса дистанции. Выполнение проходит через строчку prompts.AcquireDistance и дальше идет, в редакторе запрос не появляется, возвращает resDist.Status = OK.
Почему-то думал, что в джиге нельзя делать запросы через Editor. Но попробовал, оказалось, что можно.
Сделал так:
protected override SamplerStatus Sampler(JigPrompts prompts) { JigPromptPointOptions optPoint = new JigPromptPointOptions("Укажите точку вставки таблицы:"); optPoint.Keywords.Add("Масштаб"); PromptPointResult resPoint; do { resPoint = prompts.AcquirePoint(optPoint); switch (resPoint.Status) { case PromptStatus.Cancel: return SamplerStatus.Cancel; case PromptStatus.Keyword: if (resPoint.StringResult == "Масштаб") { PromptDoubleOptions optDouble = new PromptDoubleOptions("Укажите масштаб таблицы:"); optDouble.Keywords.Add("1"); optDouble.Keywords.Add("5"); optDouble.Keywords.Add("10"); optDouble.Keywords.Add("15"); optDouble.Keywords.Add("20"); optDouble.Keywords.Add("25"); optDouble.Keywords.Add("50"); optDouble.Keywords.Add("100"); optDouble.AllowZero = false; Editor ed = acad.DocumentManager.MdiActiveDocument.Editor; PromptDoubleResult resDoub = ed.GetDouble(optDouble); if (resDoub.Status == PromptStatus.OK) { _scale = resDoub.Value; } } break; case PromptStatus.OK: if (_cpos.DistanceTo(resPoint.Value) < 0.001) return SamplerStatus.NoChange; break; } } while (resPoint.Status == PromptStatus.Keyword); _cpos = resPoint.Value; return SamplerStatus.OK; }
Вроде нормально работает. Масштаб можно произвольный задать.
Попробовал сделать AcquireDistance (запрос в запросе), не получилось.
Ну вообще-то его тоже нужно запрашивать в цикле. Так же как ты запрашиваешь AcquirePoint.
Почему-то думал, что в джиге нельзя делать запросы через Editor. Но попробовал, оказалось, что можно.
И это в данном случае даже правильней, т.к. ты не собираешься динамически менять размер таблицы. Вот если бы собирался, то только через AcquireDistance.
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → .NET → Нажатие кнопок в Jig...
Форум работает на PunBB, при поддержке Informer Technologies, Inc