• <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, 評(píng)論 - 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 閱讀(366) 評(píng)論(0)  編輯 收藏 引用


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


            99久久国产综合精品女同图片| 亚洲欧美久久久久9999| 国产婷婷成人久久Av免费高清| 久久er国产精品免费观看8| 久久久久久久久久久久中文字幕| 久久久久人妻一区精品| 国产精品99久久免费观看| 99久久精品国产一区二区三区| 国产情侣久久久久aⅴ免费| 久久久久亚洲AV综合波多野结衣| 精品免费tv久久久久久久| 97久久超碰成人精品网站| 奇米影视7777久久精品| 婷婷综合久久中文字幕蜜桃三电影 | 久久这里只有精品首页| 国产精品美女久久久久AV福利| 97精品国产91久久久久久| 一本久久免费视频| 久久93精品国产91久久综合| 久久人人爽人人爽人人AV| 日本五月天婷久久网站| 久久精品成人一区二区三区| 国产精品久久久天天影视| 亚洲va国产va天堂va久久| 怡红院日本一道日本久久| 久久久久久av无码免费看大片| 久久精品人人做人人爽电影蜜月| 久久久久99这里有精品10| 亚洲国产精品无码久久久久久曰| 成人精品一区二区久久久| 国产午夜久久影院| 久久国产精品久久国产精品| 久久人人妻人人爽人人爽| 国产精品一区二区久久不卡| 久久精品国产亚洲av麻豆色欲 | 精品一区二区久久久久久久网站| 少妇精品久久久一区二区三区| 亚洲国产精品无码久久98| 久久综合噜噜激激的五月天| 亚洲国产精品高清久久久| 久久精品国产亚洲AV无码麻豆|