extruded normal Z=1.00000
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > extruded normal Z=1.00000

extruded normal Z=1.00000

Ответ
Поиск в этой теме
Непрочитано 28.06.2005, 02:47 #1
extruded normal Z=1.00000
Startrek
 
AutoCAD/AutoLISP
 
Seattle/USA
Регистрация: 27.08.2003
Сообщений: 1,133

Уважаемые коллеги
кто знает как бороться с эдакой напастью?
ARC, extruded normal Z=1.00000
Как убрать эту 1.000 величину???
[ATTACH]1119912478.dwg[/ATTACH]
Просмотров: 7133
 
Непрочитано 28.06.2005, 08:28 Re: extruded normal Z=1.00000
#2
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


Цитата:
Сообщение от Startrek
кто знает как бороться с эдакой напастью?
ARC, extruded normal Z=1.00000
Как убрать эту 1.000 величину???
Нормаль, она и есть нормаль. Зачем её "убирать"? Может, тебе мешает то, что в примере она, как раз не - (0.0 0.0 1.0)? DXF-код 210. Если так, то:
Код:
[Выделить все]
(defun demo (/ norm sel)
  (vla-Clear (setq norm (vlax-3d-point '(0.0 0.0 1.0))
                   sel  (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object)))
             )
  )
  (vla-SelectOnScreen
    sel
    (vlax-safearray-fill (vlax-make-safearray vlax-vbinteger '(0 . 2)) '(-4 0 -4))
    (vlax-safearray-fill
      (vlax-make-safearray vlax-vbvariant '(0 . 2))
      '("<NOT" "3DSOLID,REGION" "NOT>")
    )
  )
  (vlax-for i sel (vla-put-Normal i norm))
  (vla-Clear sel)
  (princ)
)
P.S. Код изменил, что-бы не захватывались примитивы которым нормаль править нельзя. Но это, всё равно - только демка.
Alaspher вне форума  
 
Автор темы   Непрочитано 28.06.2005, 16:58
#3
Startrek

AutoCAD/AutoLISP
 
Регистрация: 27.08.2003
Seattle/USA
Сообщений: 1,133


>>Alaspher

Спасибо попробую. А надо убрать так как иначе никак при конвертировании в полилинию не объединить с другими полилиниями
Startrek вне форума  
 
Автор темы   Непрочитано 28.06.2005, 17:23
#4
Startrek

AutoCAD/AutoLISP
 
Регистрация: 27.08.2003
Seattle/USA
Сообщений: 1,133


Ах невыходит......
Startrek вне форума  
 
Непрочитано 28.06.2005, 17:59
#5
Андрей С.

Архитектор
 
Регистрация: 25.08.2003
Москва
Сообщений: 307


Когда-то была похожая проблема с файлом, откуда-то экспортированным (кажется, из MicroStation). Половина дуг и отрезков имела направление выдавливания положительное (по Z), другая половина - отрицательное, и они от этого не объединялись в полилинии. Сейчас пытался поискать обсуждение - не нашел, но решали примерно так: зеркалили эту половину объектов командой mirror3d относительно плоскости XY (с удалением исходных), а для выбора объектов кто-то написал несколько строчек лиспа (выбирались только объекты с отрицательным направлением выдавливания). Или это не тот случай?
Андрей С. вне форума  
 
Автор темы   Непрочитано 28.06.2005, 18:08
#6
Startrek

AutoCAD/AutoLISP
 
Регистрация: 27.08.2003
Seattle/USA
Сообщений: 1,133


Андрей
К сожалению не то, пытаюсь избавится от Normal Z=1.00000
см последнюю строчку на картинке
[ATTACH]1119967729.jpg[/ATTACH]
Startrek вне форума  
 
Непрочитано 28.06.2005, 20:35
#7
Андрей С.

Архитектор
 
Регистрация: 25.08.2003
Москва
Сообщений: 307


Так это и есть направление выдавливания примитива, заданное координатами XYZ (в данном случае это вектор от точки 0,0,0 к точке 0,0,1). Если X=0, Y=0, то Z не может быть 0. И вообще-то для любой дуги, нарисованной в плоскости XY мировой системы координат, значения этого вектора будут в точности как на картинке. А объединяться в полилинию "не захотят" примитивы, у которых координаты этого вектора не одинаковы.
Можно просмотреть все примитивы, которые надо объединить в полилинию. Если эти значения (последние три строчки на картинке) у всех у них одинаковы, то объединяться они все же должны, и дело, возможно, в чем-то другом (например, в одной плоскости не лежат).
Если я правильно понял (не силен я в VL ;-)), то Alaspher как раз об этом и говорил, и приведенный код должен унифицировать нормали у выбранных примитивов.
Андрей С. вне форума  
 
Непрочитано 28.06.2005, 20:37
#8
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


Цитата:
Сообщение от Startrek
пытаюсь избавится от Normal Z=1.00000
см последнюю строчку на картинке
Ненормальная нормаль у этих дуг - не единственное препятствие ("избавиться от нормали" - нельзя, это типа "где верх"). Там ещё и Z - не нулевая.

Попробуй так: превратить дуги в полилинии, примерно так
Код:
[Выделить все]
_.PEDIT -> _M -> <select> <Enter>
Потом натравить на них это:
Код:
[Выделить все]
(defun demo (/ norm sel)
  (vla-Clear (setq norm (vlax-3d-point '(0.0 0.0 1.0))
                   sel  (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object)))
             )
  )
  (vla-SelectOnScreen
    sel
    (vlax-safearray-fill (vlax-make-safearray vlax-vbinteger '(0 . 2)) '(-4 0 -4))
    (vlax-safearray-fill
      (vlax-make-safearray vlax-vbvariant '(0 . 2))
      '("<NOT" "3DSOLID,REGION" "NOT>")
    )
  )
  (vlax-for i sel
    (vla-put-Normal i norm)
    (if (vlax-property-available-p i 'Elevation t)
      (vla-put-elevation i 0)
    )
  )
  (vla-Clear sel)
  (princ)
)
Потом сопрягать. Подходящим радиусом, конечно.
Alaspher вне форума  
 
Автор темы   Непрочитано 28.06.2005, 20:57
#9
Startrek

AutoCAD/AutoLISP
 
Регистрация: 27.08.2003
Seattle/USA
Сообщений: 1,133


>>Alaspher
Ты прост гений........огромнейшее спасибо, сработало прекрасно.
А то мое начальство уже приготовилось надрать тy часть моего
бренного тела которую я использую для сидения.
Startrek вне форума  
 
Непрочитано 28.06.2005, 22:10
#10
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


А забавная могла бы быть награда: "За спасение ..."
Alaspher вне форума  
 
Непрочитано 28.06.2005, 22:41
#11
Огурец

Profan
 
Регистрация: 27.04.2005
Москва
Сообщений: 6,761
Отправить сообщение для Огурец с помощью Skype™


Уважаемый Startrek!
Поясните подробнее, в чём была проблема с этой кривой. Я применил к ней match propeties + align (вне плоскости XY был центр окружности)+match propeties и вроде всё стало на место.
А почему у лэйаута такое странное название?
[ATTACH]1119984104.dwg[/ATTACH]
Огурец вне форума  
 
Автор темы   Непрочитано 28.06.2005, 22:51
#12
Startrek

AutoCAD/AutoLISP
 
Регистрация: 27.08.2003
Seattle/USA
Сообщений: 1,133


>>Alaspher
ЕХ МОГЛИ Б S TOBOY ОПРОКИНУТЬ ПАРОЧКУ СТАКАШКОВ КОНЬЯЧКА, НА БОЛЬШЕЕ Я ТЕПЕРЬ УЖ НЕ УДЕРЖУ - ОТВЫК ЗА 26 ЛЕТ, МЕСТНАЯ БРАТИЯ ПОСЛЕ ВТОРОГО СТАКАНА ПИВА НА РОГА ВСТАЮТ И ИХ ПО ДОМАМ НАДО РАЗВОЗИТЬ ПОТОМУ КАК ЕХАТь МОГУТ ТОЛЬКО ПО ПРЯМОЙ (ПРЯМОЙ МОЖНО С НАТЯЖКОЙ ГОВОРИТЬ)

УВАЖАЕМЫЙ ОГУРЕЦ
ПОЗХАЛУЙСТА КО МНЕ МОЖНО И НУЖНО НА "ТЫ"
А ТО ЧУВСТВУЮ СЕБЯ СТАРИКОМ
ОПИШИ ПОЖАЛУЙСТА КАК ТЫ СДЕЛАЛ ПОДРОБНЕЕ
У МЕНЯ НИКАК НЕ ПОЛУЧАЛОСЬ, А ДУГА САМАЯ ПРОСТАЯ
ТОЛьКО ВОТ КАК НА КАРТИНКЕ (ПОСЛЕДНЯЯ СТРОЧКА) NORMAL Z = 1.00000
Startrek вне форума  
 
Непрочитано 28.06.2005, 23:19
#13
Огурец

Profan
 
Регистрация: 27.04.2005
Москва
Сообщений: 6,761
Отправить сообщение для Огурец с помощью Skype™


Уважаемый Startrek!
Не обращайте внимания на мою привычку про "Вы" - я так даже с маленькими детьми разговариваю, за этим ничего не кроется, честное слово!
С дугой же я поступил следующим образом: прежде всего присвоил ей свойства другого слоя, сделал отображение origin UCS (это просто для удобства, чтобы не писать @ перед вводом координат). Далее нарисовал два отрезка, соединяющих концы дуги с центром окружности. Уже на этом этапе все примитивы благополучно объеденились в полилинию (3D), причём оказалось, что вне плоскости XY лежал именно центр окружности. Далее командой align по трём точкам я зафиксировал вершины полилинии, соответствующие концам дуги, а вершину, соответствующую центру окружности, переместил (приподнял, изменяя только координату Z) и с параметром изменения размеров фигуры, поскольку практически мы получаем проекцию заданой дуги на плоскость XY. Проверить качество результата легко, наблюдая за привязкой intersection дуги с любыми вспомогательными линиями. Далее explode, стираю лишнее и возвращаю propeties первоначального слоя. Наверно на все операции необходимы, но я просто описал, как делал.
P.S. Насчёт возраста - так всё в разделе "фотоальбом"... Никуда не денешся, я и сам такой.
Огурец вне форума  
 
Непрочитано 28.06.2005, 23:28
#14
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


>Startek
А по моему "глюк" присутствует, но всё исправляется применением _pedit с опцией multipe и всё прекрасно превращается в полилинию:
Код:
[Выделить все]
Command: _pe
PEDIT Select polyline or [Multiple]: *Cancel*

Command: pe
PEDIT Select polyline or [Multiple]: m

Select objects: Specify opposite corner: 1 found

Select objects:

Convert Lines and Arcs to polylines [Yes/No]? <Y> y

Enter an option [Close/Open/Join/Width/Fit/Spline/Decurve/Ltype gen/Undo]:
Кстати Join в процессе этого тоже всё прекрасно объединяет. А вот если не поэксперементировать и не применить Multiple, тогда действительно засада.

Всё никак не можем созвонится Ты звонил и совсем забыл что у нас тут LIGO. И Lacplesis пили, жаль без тебя, но литров по 5 на брата минимум.
{Smirnoff} вне форума  
 
Непрочитано 28.06.2005, 23:37
#15
Огурец

Profan
 
Регистрация: 27.04.2005
Москва
Сообщений: 6,761
Отправить сообщение для Огурец с помощью Skype™


Уважаемый Fantomas!
Объеденить-то вы объедените, да только полилиния получится 3D polyline . А требуется уложить её в плоскость.
А мы раньше (1977-78-79) на Ligo в Риге пиво Auris пили в не меньших количествах...
Огурец вне форума  
 
Непрочитано 28.06.2005, 23:45
#16
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


Ну незнаю, незнаю. У меня после вышеописанной манипуляции получается обычная Polyline и всё прекрасно объединяется с другими полилиниями. Прошу убедится. Может это надо сделать в предложенной UCS? Тогда другое дело.

Пиво кстати Aldaris называется. Сейчас оно уже не то, пастеризованное. Хотя есть отдельные любители.
[ATTACH]1119987913.dwg[/ATTACH]
{Smirnoff} вне форума  
 
Непрочитано 29.06.2005, 00:04
#17
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


В приложеном файле нормаль дуги выглядит так:

210
-0.0000000003689525
220
-0.0000000001484358
230
1.0

И непаралельна она ПСК не потому что Z=1, а потому что X и Y <> 0, а в свойствах иpза округления этого невидно.
В лиспе я не силен, но иправив X и Y на 0 руками у меня всё получилось.
zamtmn вне форума  
 
Непрочитано 29.06.2005, 00:16
#18
Огурец

Profan
 
Регистрация: 27.04.2005
Москва
Сообщений: 6,761
Отправить сообщение для Огурец с помощью Skype™


Уважаемый Fantomas!
Что-то странное с этой кривой. Раскрыл я Ваш файл, действительно всё прекрасно объединяется в полилинию. НО! Координата z центра дуги отличается от нуля... Обратите внимание: x-line не даёт пересечения с указаной дугой. Будем разбираться. Может быть дело в пределах точности отображения в автокаде?
[ATTACH]1119989912.dwg[/ATTACH]
Огурец вне форума  
 
Непрочитано 29.06.2005, 00:25
#19
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


>zamtmn
Да при попытке преобразования в полилинию AutoCAD именно это и говорит:
Код:
[Выделить все]
PEDIT Select polyline or [Multiple]:
Select polyline or [Multiple]:
The object is not parallel to the UCS.
Для разнообразия DXF этой арки:
Код:
[Выделить все]
Command: (entget(car(entsel)))

Select object: ((-1 . <Entity name: 7ef7ada8>) (0 . "ARC") (330 . <Entity name: 
7ef7ac10>) (5 . "35") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . 
"CENTERLINES") (100 . "AcDbCircle") (10 1.17628e+006 709147.0 -0.000539221) (40 
. 200.0) (210 -3.68953e-010 -1.48436e-010 1.0) (100 . "AcDbArc") (50 . 2.938) 
(51 . 3.52409))
Но когда делаешь тоже самое с опцией Multiple то почему то все получается. По крайней мере у меня.
{Smirnoff} вне форума  
 
Непрочитано 29.06.2005, 00:30
#20
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


multiple забацает 3Dполилинию, что не всегда хорошо.

Решать подобные проблемы можно командами DSTP_OBJUCSFX и DSTP_OBJFLAT из состава TOOLPAC
zamtmn вне форума  
 
Непрочитано 29.06.2005, 00:34
#21
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


Координаты центра отличны от нуля именно потому что нормаль<>0,0,1, точность автокада тут ни причем, просто дхф группы дуги задаются в локальной системе координат, которой управляет именно нормаль
zamtmn вне форума  
 
Автор темы   Непрочитано 29.06.2005, 00:35
#22
Startrek

AutoCAD/AutoLISP
 
Регистрация: 27.08.2003
Seattle/USA
Сообщений: 1,133


Спасибо всему честному народу, вроде все понятно, хотя интересно покопаться поглубже.......
Startrek вне форума  
 
Непрочитано 29.06.2005, 00:40
#23
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


>Огурец

Да что то странное, отличается в последнем знаке (выставил максимальную точность). По моему на вопрос "работает-неработает" тут отвечает одна из системных переменных причем косвенно. У меня к примеру всё работает и с XLine пересечение есть. А дуга действительно чуть-чуть развернута. Это первй вопрос. А второй, почему же у кого то всё ОК, у других не всё? И что за это отвечает?
{Smirnoff} вне форума  
 
Непрочитано 29.06.2005, 00:47
#24
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


>Fantomas
что работает-неработает?
если дуга паралельна UCS, получится полилиния, если нет, 3дполилиния
zamtmn вне форума  
 
Автор темы   Непрочитано 29.06.2005, 00:50
#25
Startrek

AutoCAD/AutoLISP
 
Регистрация: 27.08.2003
Seattle/USA
Сообщений: 1,133


>>Fantomas
Да совсем про ЛИГО позабыл, жаль что так далеко, присоединился бы.
правда пришлось бы потренироваться недельку, что бы в форму прийти......ничего созвонимся
Startrek вне форума  
 
Непрочитано 29.06.2005, 01:14
#26
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


>zamtmn

Цитата:
Координаты центра отличны от нуля именно потому что нормаль<>0,0,1
Не согласен. Вот тут то Z как раз должна быть равна 0.

Цитата:
дхф группы дуги задаются в локальной системе координат, которой управляет именно нормаль
Согласен. И данная дуга посторена в UCS "чуть-чуть" отличной от WCS.

Цитата:
точность автокада тут ни причем
Наверное где то причём, если выдаёт такие небольшие "глюки". Причем избирательно и зависит это от какой то переменной. Возможно косвенно. У нас разные результаты работы с одной и той же дугой.
{Smirnoff} вне форума  
 
Непрочитано 29.06.2005, 01:22
#27
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


>Startek

ЛИГО прошло удачно. Наверное поэтому ещё не совсем отошел. У меня теперь Skype на новой работе тоже стоит. Так что можешь попытатся позвонить и в другое время.
{Smirnoff} вне форума  
 
Непрочитано 29.06.2005, 01:29
#28
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


>Fantomas
да, в "свойствах" дуги координаты центра z=0, сохраните этот файл в DXF, там координаты центра дуги будут немного другие, какраз изза нормали, а не изза округления.

"работает-неработает", у меня оказывается тоже работает (с мультипле строит обычную полилинию), вначале я конвертировал не PEDIT, а тулпаковской DSTP_CVLN2PL
zamtmn вне форума  
 
Непрочитано 29.06.2005, 01:49
#29
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


>zamtmn
Я честно говоря в вопросах 3D - дилетант и "теоретик" поскольку практически не сталкиваюсь с этим на работе, даже создание UCS нечастая практика для того кто в основном рисует провода. Только программирование на AutoLISP для других посетителей форумов заставляет меня иногда сталкиватся с этим. А вы судя по всему неплохо подкованы в этих вопросах.
Я то думал откуда вы берёте "чистые" 220 и 230. Теперь понял сохраняете в DXF и там уже смотрите. В общем я ещё завтра попытаюсь добить этот вопрос с помощью "Полещука" чтобы окончательно всё для себя уяснить.

Пора спать и вам в Тюмени тоже
{Smirnoff} вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > extruded normal Z=1.00000