• <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 閱讀(368) 評論(0)  編輯 收藏 引用

            狠狠人妻久久久久久综合| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 久久精品中文字幕无码绿巨人| 免费一级欧美大片久久网| 亚洲综合精品香蕉久久网| 久久精品国产99久久久| 国产精品伦理久久久久久| 久久精品无码专区免费青青| 久久国产精品99久久久久久老狼| 久久天天婷婷五月俺也去| 久久久青草青青亚洲国产免观| 少妇人妻综合久久中文字幕| 久久se精品一区二区影院| 国内精品久久久久影院薰衣草| 爱做久久久久久| 精品久久久无码人妻中文字幕豆芽 | 久久伊人五月天论坛| 午夜久久久久久禁播电影| 漂亮人妻被中出中文字幕久久 | 亚洲精品无码久久久久去q | 久久久久综合国产欧美一区二区| 久久亚洲国产成人精品性色| 久久亚洲精品成人av无码网站| 久久久久婷婷| 色综合久久88色综合天天 | 国内精品久久久久久久涩爱| 久久99精品国产麻豆| 99久久夜色精品国产网站| 久久久久亚洲av毛片大| 99久久免费只有精品国产| 久久久久99精品成人片三人毛片| 麻豆一区二区99久久久久| 亚洲熟妇无码另类久久久| 波多野结衣久久精品| 国产A级毛片久久久精品毛片| 久久一区二区三区免费| 热久久最新网站获取| 久久久精品人妻一区二区三区蜜桃| 久久精品中文无码资源站| 日韩精品久久无码人妻中文字幕| 久久综合久久综合亚洲|