LISP调用javascript函数方法举例
本帖最后由 1291500406 于 2022-3-8 14:06 编辑;;;函数接口
(defun bb-for-js (func_str else_ret / ret)
(if
(or
ScriptControl
(setq ScriptControl (vlax-create-object "{e8540e26-d20e-483f-9fd5-a5a3553a7556}"))
(setq ScriptControl (vlax-create-object "{0e59f1d5-1fbe-11d0-8ff2-00a0d10038bc}"))
)
(progn
(vl-catch-all-apply 'vlax-put (list ScriptControl "language" "jscript"))
(if
(not
(vl-catch-all-error-p
(setq ret
(vl-catch-all-apply
' vlax-invoke
(list
ScriptControl
"eval"
func_str
)
)
)
)
)
ret
else_ret
)
)
else_ret
)
)
;;;时间相关
;;;格林时间转北京时间
(setq time_str "Fri, 19 Jul 2019 05:57:20 GMT")
;;;"Fri, 19 Jul 2019 05:57:20 GMT"
(bb-for-js
(strcat "new Date('" time_str"').toLocaleString()+ ' 星期'+['日','一','二','三','四','五','六'];" )
"无com组件"
);;;返回值 "2019年7月19日 13:57:20 星期五"
;;;当前时间
(bb-for-js
"new Date().toLocaleTimeString();"
"无com组件"
)
;;;返回值 "10:15:39"
Date 对象属性
属性描述
constructor返回创建 Date 对象原型的函数。
prototype允许您向对象添加属性和方法。
Date 对象方法
方法描述
getDate()返回月中的第几天(从 1 到 31)。
getDay()返回星期几(0-6)。
getFullYear()返回年份。
getHours()返回小时(从 0-23)。
getMilliseconds()返回毫秒(0-999)。
getMinutes()返回分钟(从 0-59)。
getMonth()返回月份(从 0-11)。
getSeconds()返回秒数(从 0-59)。
getTime()返回自 1970 年 1 月 1 日午夜以来与指定日期的毫秒数。
getTimezoneOffset()返回 UTC 时间与本地时间之间的时差,以分钟为单位。
getUTCDate()根据世界时,返回月份中的第几天(从 1 到 31)。
getUTCDay()根据世界时,返回星期几(0-6)。
getUTCFullYear()根据世界时,返回年份。
getUTCHours()根据世界时,返回小时(0-23)。
getUTCMilliseconds()根据世界时,返回毫秒数(0-999)。
getUTCMinutes()根据世界时,返回分钟(0-59)。
getUTCMonth()根据世界时,返回月份(0-11)。
getUTCSeconds()根据世界时,返回秒数(0-59)。
getYear()已弃用。请改用 。
now()返回自 1970 年 1 月 1 日午夜以来的毫秒数。
parse()解析日期字符串并返回自 1970 年 1 月 1 日以来的毫秒数。
setDate()设置 Date 对象中月的某一天。
setFullYear()设置日期对象的年份
setHours()设置日期对象的小时。
setMilliseconds()设置日期对象的毫秒数。
setMinutes()设置日期对象的分钟数。
setMonth()设置日期对象的月份。
setSeconds()设置日期对象的秒数。
setTime()将日期设置为 1970 年 1 月 1 日之后/之前的指定毫秒数。
setUTCDate()根据世界时,设置 Date 对象中月份的一天。
setUTCFullYear()根据世界时,设置日期对象的年份。
setUTCHours()根据世界时,设置日期对象的小时。
setUTCMilliseconds()根据世界时,设置日期对象的毫秒数。
setUTCMinutes()根据世界时,设置日期对象的分钟数。
setUTCMonth()根据世界时,设置日期对象的月份。
setUTCSeconds()根据世界时,设置日期对象的秒数。
setYear()已弃用。请改用 。
toDateString()将 Date 对象的日期部分转换为可读字符串。
toGMTString()已弃用。请改用 。
toISOString()使用 ISO 标准将日期作为字符串返回。
toJSON()以字符串形式返回日期,格式为 JSON 日期。
toLocaleDateString()使用区域设置约定将 Date 对象的日期部分作为字符串返回。
toLocaleTimeString()使用区域设置约定将 Date 对象的时间部分作为字符串返回。
toLocaleString()使用区域设置约定将 Date 对象转换为字符串。
toString()将 Date 对象转换为字符串。
toTimeString()将 Date 对象的时间部分转换为字符串。
toUTCString()根据世界时,将 Date 对象转换为字符串。
UTC()根据 UTC 时间,返回自 1970 年 1 月 1 日午夜以来的日期中的毫秒数。
valueOf()返回 Date 对象的原始值。
;;;运算相关
JavaScript random() 方法实例返回 0(含)和 1(不含)之间的随机数:Math.random();
;;;随机数
(progn
(setq
bmin 100
bmax 300
)
(bb-for-js
(strcat
"Math.floor(Math.random()*" (vl-princ-to-string (- bmax bmin))")+" (vl-princ-to-stringbmin) ";"
)
bmin
)
)
100 300之内数字
;;;字符串相关
JavaScript length 属性定义和用法length 属性可返回字符串中的字符数目。语法stringObject.length
;;;返回字符串长度
(setq str "2019年7月19日 13:57:20 星期五")
(bb-for-js (strcat "'" str "'.length;")nil);;;返回值: 23
(strlen str);;;2010返回值: 29
(strlen str);;;2022返回值: 23
JavaScript replace() 方法定义和用法replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。语法stringObject.replace(regexp/substr,replacement)
参数描述
regexp/substr必需。规定子字符串或要替换的模式的 RegExp 对象。请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象。
replacement必需。一个字符串值。规定了替换文本或生成替换文本的函数。
返回值一个新的字符串,是用 replacement 替换了 regexp 的第一次匹配或所有匹配之后得到的。说明字符串 stringObject 的 replace() 方法执行的是查找并替换的操作。它将在 stringObject 中查找与 regexp 相匹配的子字符串,然后用 replacement 来替换这些子串。如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。replacement 可以是字符串,也可以是函数。如果它是字符串,那么每个匹配都将由字符串替换。但是 replacement 中的 $ 字符具有特定的含义。如下表所示,它说明从模式匹配得到的字符串将用于替换。
字符替换文本
$1、$2、...、$99与 regexp 中的第 1 到第 99 个子表达式相匹配的文本。
$&与 regexp 相匹配的子串。
$`位于匹配子串左侧的文本。
$'位于匹配子串右侧的文本。
$$直接量符号。
注意:ECMAScript v3 规定,replace() 方法的参数 replacement 可以是函数而不是字符串。在这种情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。该函数的第一个参数是匹配模式的字符串。接下来的参数是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。接下来的参数是一个整数,声明了匹配在 stringObject 中出现的位置。最后一个参数是 stringObject 本身。
;;;文字的内容替换
(setq
str "替换字符串例子,替换文字内容,替换内容"
old "替换"
new "换个屁"
)
(bb-for-js
(strcat "'" str "'.replace(/" old "/g,'" new "');" )
"无com组件"
)
;;;返回值 "换个屁字符串例子,换个屁文字内容,换个屁内容"
能调 javasrcipt 的 alert 弹出窗口指令吗? ACAD-64位
(vlax-create-object "{E8540E26-D20E-483F-9FD5-A5A3553A7556}")
(vlax-create-object "{0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC}")
(vlax-create-object "scriptcontrol")
均不成功 本帖最后由 1291500406 于 2022-3-8 13:23 编辑
crtrccrt 发表于 2022-3-8 12:46
ACAD-64位
(vlax-create-object "{E8540E26-D20E-483F-9FD5-A5A3553A7556}")
(vlax-create-object "{0E59 ...
com类型编程 就是这样,一般win10电脑自带,无需注册 win7 可能com比较少 需注册 dwx亦是如此
mokson 发表于 2022-3-8 14:52
能调 javasrcipt 的 alert 弹出窗口指令吗?
alert 不行 请教一下,谢谢。我尝试如下代码,为何不成功?
(bb-for-js "clipboardData.setData(\"Text\",\"11\")" nil)
页:
[1]