• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Life is Good.

            Enhance Tech and English
            隨筆 - 65, 文章 - 20, 評論 - 21, 引用 - 0
            數(shù)據(jù)加載中……

            How to Use (handent …) Safely

            Caution around (handent …) Function

             

            If not used carefully, this function can easily generate “bad argument type: stringp nil” or “bad argument type: lentityp nil” errors in our product. The purpose of this function is to convert a hexadecimal text string value that represents an object “handle” ID into an entity name assignment. AutoCAD uses this entity name to access the target object in the drawing. This ascii text string is the function’s only argument.

             

            The most serious problem occurs immediately if the passed string value is nil. Our program will exit with a “bad argument type: stringp nil” error.  

            A real-world example: here is a line of code that triggered a recent regression ():

             

                        (setq layername (cdr (assoc 8 (entget (handent entname)))))

             

            In this example, the variable “netwire” could, under certain conditions, be passed as a value of nil instead of as an ASCII text string giving the handle number. The function (handent netwire) that is embedded in the line of code above fails with the error message “bad argument type: lentityp nil”. You can simulate this at the command line. Type in this sequence:  (setq netwire nil) [Enter] and then (handent netwire) [Enter].

             

            The above line of code has a second potential problem. Even if “netwire” is not nil but is an ASCII text string, it might not convert to a valid entity name in the active drawing. In this case, the (handent…) function will not fail but will simply return nil. But, this creates a downstream problem. The nil value gets passed to the (entget…) function. When passed a nil value instead of a valid entity name, the (entget…) function fails. The program stops with the error “bad argument: lentityp nil”. You can simulate this at the command line by typing this:  (entget (handent “ABCD1234”)) [Enter]

             

             

            How to Use (handent …) Safely

             

            In the above example, two checks are needed. First check is to make sure that “netwire” is not a nil value. The second is that “netwire” is a valid handle ID for an entity in the target drawing. So, these two checks might be coded up like this:

             

            (if (AND entname(handent entname) (entget (handent entname))) (setq layername (cdr (assoc 8 (entget (handent entname))))))

             

            … or, a written a bit more efficiently…

             

            (if (AND entname(setq en (handent entname)) (entget en)) (setq layername (cdr (assoc 8 (entget en)))))

            posted on 2008-07-31 15:00 Mike Song 閱讀(365) 評論(0)  編輯 收藏 引用


            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            久久精品国产99久久久| 国产精品99久久久久久猫咪| 久久99毛片免费观看不卡 | 热RE99久久精品国产66热| 激情伊人五月天久久综合| 久久丫精品国产亚洲av| 99精品久久久久久久婷婷| 精品伊人久久大线蕉色首页| 国产精品美女久久福利网站| 亚洲国产天堂久久综合| 国产精品99久久久久久宅男小说| 免费精品久久久久久中文字幕| 久久久久黑人强伦姧人妻| 久久久久久久国产免费看| 欧美伊人久久大香线蕉综合69| 久久天天躁狠狠躁夜夜不卡 | 久久久久亚洲精品男人的天堂| 久久强奷乱码老熟女| 久久一区二区免费播放| 中文字幕精品久久| 亚洲国产精品一区二区久久hs | 久久福利青草精品资源站| 国产综合精品久久亚洲| 亚洲精品无码久久毛片| 久久精品一区二区三区AV| 九九久久自然熟的香蕉图片| 国产91久久精品一区二区| 国产成人精品久久一区二区三区av| 激情综合色综合久久综合| 久久笫一福利免费导航 | 国产精品日韩欧美久久综合| 理论片午午伦夜理片久久| 99久久这里只精品国产免费| 一本久道久久综合狠狠爱| 99久久综合狠狠综合久久| 国产毛片欧美毛片久久久| 日本久久久久久中文字幕| 思思久久99热只有频精品66| 久久久久久a亚洲欧洲aⅴ| 国内精品伊人久久久久妇| 国产亚洲美女精品久久久久狼|