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

            日韩久久无码免费毛片软件| 一本色道久久综合狠狠躁| 亚洲国产精品无码久久久不卡| 久久婷婷五月综合国产尤物app | 精品久久8x国产免费观看| 伊人久久综在合线亚洲2019| 国产成人精品三上悠亚久久| 久久99精品久久久久婷婷| 久久久99精品成人片中文字幕| 无码人妻久久久一区二区三区| 国产99精品久久| 日产精品久久久一区二区| 狠狠色噜噜色狠狠狠综合久久| 久久精品aⅴ无码中文字字幕重口| 久久精品国产久精国产果冻传媒 | 97精品伊人久久久大香线蕉 | 日韩乱码人妻无码中文字幕久久| 久久精品国产WWW456C0M| 国产亚洲精品自在久久| 一级做a爰片久久毛片看看| 久久本道久久综合伊人| 国产精品久久久久久久午夜片| 久久综合久久久| 久久噜噜电影你懂的| 久久国产免费观看精品3| 久久久久se色偷偷亚洲精品av| 久久久久无码国产精品不卡| 天天久久狠狠色综合| 久久精品国内一区二区三区 | 77777亚洲午夜久久多喷| 久久精品国产99久久香蕉| 9999国产精品欧美久久久久久| 久久国产色AV免费观看| 人妻少妇久久中文字幕一区二区| 综合网日日天干夜夜久久| 久久久久久久波多野结衣高潮| 久久亚洲精品国产精品婷婷 | 香港aa三级久久三级| 91精品婷婷国产综合久久| 国产精久久一区二区三区| 九九久久99综合一区二区|