• <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
            數據加載中……

            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)  編輯 收藏 引用

            亚洲欧美一级久久精品| 99精品国产在热久久无毒不卡| 久久综合久久综合久久| 国产农村妇女毛片精品久久| 久久亚洲国产精品123区| 亚洲精品综合久久| 久久99这里只有精品国产| 久久久婷婷五月亚洲97号色| 精品久久久无码中文字幕天天| 97精品伊人久久久大香线蕉| 久久国产欧美日韩精品| 国产精品无码久久四虎| 亚洲中文精品久久久久久不卡| 99久久国产主播综合精品| 久久久午夜精品| 国产综合免费精品久久久| 欧美一区二区三区久久综| 日韩美女18网站久久精品| 浪潮AV色综合久久天堂| 亚洲精品无码久久久久AV麻豆| 91久久精一区二区三区大全| 国产精品久久久99| 国产精品99久久免费观看| 久久精品日日躁夜夜躁欧美| 久久人人超碰精品CAOPOREN| 91精品国产91久久综合| 欧美日韩精品久久久免费观看| 伊人久久大香线蕉精品| 久久99久久99精品免视看动漫| 精品久久久久久国产三级| 国产Av激情久久无码天堂| 亚洲精品乱码久久久久66| 99久久综合国产精品免费| 久久精品亚洲男人的天堂| 国产精品九九久久免费视频 | 国产精品熟女福利久久AV| 伊人久久综合无码成人网| 久久婷婷人人澡人人爽人人爱| 欧美麻豆久久久久久中文| 国产高潮国产高潮久久久91| 久久精品九九亚洲精品|