1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

**system exception**

Тема в разделе "MAXScript", создана пользователем Артур Сиятелев, 3 июл 2014.

Модераторы: Savin Denis
  1. Артур Сиятелев

    Артур Сиятелев Пользователь сайта

    С нами с:
    29.07.2013
    Сообщения:
    4
    Симпатии:
    1
    Баллы:
    2
    Доброго времени суток!
    MAXScript выкидывает сообщение об ошибке при попытке исполнения скрипта. Rollout создается, однако, при попытке выбрать объект обработчик pickbutton не срабатывает. Какого рода исключение может скрываться под **system exception** (гуглил — пусто, справку перелопатил — в коде вроде все ок)?

    Злополучный скрипт
    Код:
    (
        local theMesh
     
        fn filterMesh obj = (
            classOf obj == Editable_Mesh
        )   
     
        rollout IntersectWithMesh "Intersection with mesh" (
            timer timerControl interval:50 active:false
            pickButton pickMesh "Pick mesh" width:280 filter:filterMesh
            editText faceHit "Face index:"
            editText normalHit "Normal vector:"
            editText worldHit "World coords:"
            editText baryCoords "Barycentric coords:"
        )
     
        on pickMesh picked obj do (
            if obj != undefined do (
                theMesh = obj
                pickMesh.caption = obj.name
                timerControl.active = true
            )
        )
     
        on timerControl tick do (
            theRay = mapScreenToWorldRay mouse.pos
            theInt = IntersectRayEx theMesh theRay
            if theInt != undefined then (
                faceHit.text = theInt[2] as string
                normalHit.text = theInt[1].dir as string
                worldHit.text = theInt[1].pos as string
                baryCoords.text = theInt[3] as string
            ) else (
                faceHit.text = normalHit.text = worldHit.text = baryCoords.text = ""
            )
        )
       
        createDialog IntersectWithMesh width:300
    )
    
     
  2. igorznag

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.256
    Симпатии:
    173
    Баллы:
    65
    В коде не все ок. Одна скобка находится в неправильном месте.
    Правильно будет так:
    Код:
    (
        local theMesh
     
        fn filterMesh obj = (
            classOf obj == Editable_Mesh
        )   
     
        rollout IntersectWithMesh "Intersection with mesh" (
            timer timerControl interval:50 active:false
            pickButton pickMesh "Pick mesh" width:280 filter:filterMesh
            editText faceHit "Face index:"
            editText normalHit "Normal vector:"
            editText worldHit "World coords:"
            editText baryCoords "Barycentric coords:"
        
     
        on pickMesh picked obj do (
            if obj != undefined do (
                theMesh = obj
                pickMesh.caption = obj.name
                timerControl.active = true
            )
        )
     
        on timerControl tick do (
            theRay = mapScreenToWorldRay mouse.pos
            theInt = IntersectRayEx theMesh theRay
            if theInt != undefined then (
                faceHit.text = theInt[2] as string
                normalHit.text = theInt[1].dir as string
                worldHit.text = theInt[1].pos as string
                baryCoords.text = theInt[3] as string
            ) else (
                faceHit.text = normalHit.text = worldHit.text = baryCoords.text = ""
            )
        )
       )
        createDialog IntersectWithMesh width:300
    )
     
    Артур Сиятелев нравится это.
  3. Артур Сиятелев

    Артур Сиятелев Пользователь сайта

    С нами с:
    29.07.2013
    Сообщения:
    4
    Симпатии:
    1
    Баллы:
    2
    igorznag
    Спасибо!
     
Модераторы: Savin Denis

Поделиться этой страницей