3DCenter.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Reply to this topicStart new topic
> Размерные линии
SvetRa
сообщение 29/07/2017, 13:17
Сообщение #1


Уже не новичок
Иконка группы

Группа: Пользователи
Сообщений: 16
Регистрация: 25/07/2017
Пользователь №: 136 268



Здравствуйте! Столкнулся с проблемой размерных линий, точнее с их отсутствием в 3д максе. Попытался сделать свои. Файл прикрепил. Не смогу поставить пивот на линию, пока выбрана определенная линия(и переместив пивот в центр ее) все нормально, но как переключаюсь а другой обьект, то пивот линии, которую выбирал вначале улетает.
посмотрите пожалуйста файл!

Сообщение отредактировал SvetRa - 29/07/2017, 13:19
Прикрепленные изображения
Прикрепленное изображение
 

Прикрепленные файлы
Прикрепленный файл  размеры.rar ( 80,91 килобайт ) Кол-во скачиваний: 36
 
Go to the top of the page
 
+Quote Post
SvetRa
сообщение 29/07/2017, 13:27
Сообщение #2


Уже не новичок
Иконка группы

Группа: Пользователи
Сообщений: 16
Регистрация: 25/07/2017
Пользователь №: 136 268



Пробовал привязать текст, но не получается, не хватает знаний. Помогите пожалуйста! helpsmilie.gif
Прикрепленные изображения
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Jahman
сообщение 29/07/2017, 19:48
Сообщение #3


уже всё сделал
Иконка группы

Группа: Пользователи
Сообщений: 2 456
Регистрация: 01/06/2005
Из: z3л3№гр@d
Пользователь №: 13 838



Для измерений есть инструмент tape. Оба конца можно прилинковать к объектам
Правда без скрипта смотреть размеры неудобно.

Сообщение отредактировал Jahman - 29/07/2017, 19:50
Прикрепленные изображения
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
SvetRa
сообщение 29/07/2017, 22:32
Сообщение #4


Уже не новичок
Иконка группы

Группа: Пользователи
Сообщений: 16
Регистрация: 25/07/2017
Пользователь №: 136 268



Цитата(Jahman @ 29/07/2017, 19:48) *
Для измерений есть инструмент tape. Оба конца можно прилинковать к объектам
Правда без скрипта смотреть размеры неудобно.

ну так себе) чувствую скоро придется писать скрипт)
Go to the top of the page
 
+Quote Post
Jahman
сообщение 29/07/2017, 22:37
Сообщение #5


уже всё сделал
Иконка группы

Группа: Пользователи
Сообщений: 2 456
Регистрация: 01/06/2005
Из: z3л3№гр@d
Пользователь №: 13 838



есть небесплатный, но довольно функциональный
Go to the top of the page
 
+Quote Post
BorisK
сообщение 29/07/2017, 22:47
Сообщение #6


Давно уже
Иконка группы

Группа: Координатор
Сообщений: 9 675
Регистрация: 24/06/2002
Из: Зеленоград
Пользователь №: 158



Цитата(Jahman @ 29/07/2017, 22:37) *
есть небесплатный, но довольно функциональный

древний, но вдруг рабочий? http://www.scriptspot.com/bobo/mxs9/DIMaster/
Go to the top of the page
 
+Quote Post
Jahman
сообщение 29/07/2017, 23:08
Сообщение #7


уже всё сделал
Иконка группы

Группа: Пользователи
Сообщений: 2 456
Регистрация: 01/06/2005
Из: z3л3№гр@d
Пользователь №: 13 838



для статичных размеров могу такое предложить
Прикрепленное изображение
CODE
tool clickDist
(
    fn dist p1 p2 = (
        
        vec = normalize (p2-p1)
        perp = normalize (cross vec [0,0,1])
            
        shp = splineShape wirecolor:yellow
            
        addnewspline shp
        addKnot shp 1 #corner #line p1
        addKnot shp 1 #corner #line (p1-perp*20)

            
        addnewspline shp
        addKnot shp 2 #corner #line p2
        addKnot shp 2 #corner #line (p2-perp*20)

        addnewspline shp    
        addKnot shp 3 #corner #line (p1 - perp*10)
        addKnot shp 3 #corner #line (p2 - perp*10)
        
        -- arrows
        addnewspline shp    
        addKnot shp 4 #corner #line (p1 - perp*10 + perp*1 + vec*2)
        addKnot shp 4 #corner #line (p1 - perp*10)
        addKnot shp 4 #corner #line (p1 - perp*10 - perp*1 + vec*2)
        
        addnewspline shp    
        addKnot shp 5 #corner #line (p2 - perp*10 + perp*1 - vec*2)
        addKnot shp 5 #corner #line (p2 - perp*10)
        addKnot shp 5 #corner #line (p2 - perp*10 - perp*1 - vec*2)
        
        

        updateshape shp

        t = text text:(units.formatValue(distance p1 p2)) size:10 wirecolor:yellow pos:(-perp*12 + (p1+p2)/2.0)
            
        t.dir = perp
        in coordsys local rotate t (angleaxis -90 [1,0,0])
        
        convertTo t splineshape
        addandweld shp t 0.0001
            
        shp.pivot = p1
        
    )
    
        
    local p1
    local p2
    local curSnapMode
    local curSnapType
    local rubberMode
    
    on start do    (
        
        curSnapMode = snapMode.active
        curSnapType = snapMode.type
        snapMode.active = true
        snapMode.type = #3D

    )
    
    on mouseAbort arg do (
        
        snapMode.active = curSnapMode
        try(snapMode.type = curSnapType)catch()    
    )        

    on stop do (
    
        snapMode.active = curSnapMode
        try(snapMode.type = curSnapType)catch()    
    )

    on mousemove clickno do (
        
        redrawViews()
        
    )
    
    on mousePoint clickno do (
        
        case clickno of (
            
            (1): p1 = worldPoint
            (2): p2 = worldPoint
            default:()
            
        )
        
        if clickno == 3 do (
            p2 = worldPoint

            dist p1 p2
            #stop
        )
        
    )
    
)

startTool clickDist


Сообщение отредактировал Jahman - 29/07/2017, 23:12
Go to the top of the page
 
+Quote Post
SvetRa
сообщение 30/07/2017, 11:24
Сообщение #8


Уже не новичок
Иконка группы

Группа: Пользователи
Сообщений: 16
Регистрация: 25/07/2017
Пользователь №: 136 268



Огромная благодарность! То, что надо. В принципе, разберусь и под нужды добавлю что нибудь. Можно же создать скрипт на обновление всех размеров? Концы размеров привязать к точкам обьекта, при расширении, и нажатии на кнопку обновить, чтобы он проверял у всех обьектов с таких то именем, к примеру размеры, расстояние между точками и обновлял текст. Хотя текст как понял тут тоже сплайн.
Go to the top of the page
 
+Quote Post
SvetRa
сообщение 30/07/2017, 11:32
Сообщение #9


Уже не новичок
Иконка группы

Группа: Пользователи
Сообщений: 16
Регистрация: 25/07/2017
Пользователь №: 136 268



Цитата(Jahman @ 29/07/2017, 23:08) *
для статичных размеров могу такое предложить

Благодарю, что дал почву для размышлений! Если убрать где конвертируется в сплайн, то как раз получается просто текст.
Кстати, я чуть-чуть замахнулся, ведь, при изменении точек, привязка не работает, только если так же скриптом делать отслеживание точек, такое можно?

Сообщение отредактировал SvetRa - 30/07/2017, 11:38
Go to the top of the page
 
+Quote Post
Jahman
сообщение 30/07/2017, 11:46
Сообщение #10


уже всё сделал
Иконка группы

Группа: Пользователи
Сообщений: 2 456
Регистрация: 01/06/2005
Из: z3л3№гр@d
Пользователь №: 13 838



я вчера пробовал интерактив сделать, правда там столько еще подводных камней и мест где можно дров наломать





Прикрепленные изображения
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Jahman
сообщение 30/07/2017, 12:07
Сообщение #11


уже всё сделал
Иконка группы

Группа: Пользователи
Сообщений: 2 456
Регистрация: 01/06/2005
Из: z3л3№гр@d
Пользователь №: 13 838



пример того как показать размеры для выделенного сегмента

CODE
try (unregisterRedrawViewsCallback displaySegmentsLength.GW_displaySegmentsLength)catch()
try (destroydialog displaySegmentsLength ) catch ()
rollout displaySegmentsLength "" (

    CheckButton showseglen "show segment lengths"
    
    fn GW_displaySegmentsLength =
    (

        if superclassof selection[1] == shape and classof selection[1] == splineshape do (
                
            gw.setTransform (matrix3 1)
            
            obj = selection[1]
            splinesCount = numSplines obj
            
            if splinesCount == undefined or splinesCount == 0 do return -1
            

                midpoints = #()
                for i=1 to splinesCount do (
                    
                        segLengths    = getSegLengths obj i
                        segmentsCount = numSegments obj i
                        
                        for s=1 to segmentsCount do (
                            
                            if findItem (getSegSelection obj i) s > 0 do ( -- show lengths for selected segments only
                                
                                append midpoints #((interpBezier3D obj i s 0.5 pathParam:false),segLengths[s+segmentsCount])
                            
                            )
                        )
                    
                )

                for m in midpoints do (    
                    
                    gw.text m[1] (units.formatValue m[2]) color:yellow
                    
                )
                
        )

    )
    
    
    on showseglen changed state do (
        
        if state then (
            
            unregisterRedrawViewsCallback GW_displaySegmentsLength
            registerRedrawViewsCallback GW_displaySegmentsLength
            
        ) else (
            
            unregisterRedrawViewsCallback GW_displaySegmentsLength            
            
        )
        
        
    )
    
    on displaySegmentsLength close do unregisterRedrawViewsCallback GW_displaySegmentsLength

)
createDialog displaySegmentsLength pos:[100,200]
Go to the top of the page
 
+Quote Post
SvetRa
сообщение 30/07/2017, 20:28
Сообщение #12


Уже не новичок
Иконка группы

Группа: Пользователи
Сообщений: 16
Регистрация: 25/07/2017
Пользователь №: 136 268



Благодарю вас! Вы очень помогаете людям! Желаю, чтобы в жизни , если надо, вам всегда помогали!

Сообщение отредактировал SvetRa - 30/07/2017, 20:29
Go to the top of the page
 
+Quote Post
Bots
сообщение Системное сообщение






Reply to this topicStart new topic

1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 18/04/2024 - 09:02