Đến nội dung


Hình ảnh
- - - - -

[yêu cầu] Lisp stretch nhóm đối tượng 2 phía vào giữa và xung quanh vào tâm


  • Please log in to reply
24 replies to this topic

#21 mrphuocvie

mrphuocvie

    biết vẽ ellipse

  • Members
  • PipPip
  • 50 Bài viết
Điểm đánh giá: -8 (bình thường)

Đã gửi 21 August 2014 - 08:16 AM

(defun c:D1()
    (setvar "cmdecho" 0)
	(setvar "clayer" "07寸法")
	(command "dimlinear" pause pause pause)
	(command "dimcontinue" entlast "")
    (princ)
)

Tại sao mình không chuyển sang .vlx được.

Nó báo lỗi:

; Compilation aborted
; error: compiler found fatal error[s] "Setlayerdim-140819.lsp"

 

; Compilation aborted
; error: compiler found fatal error[s] "Setlayerdim-140819.lsp"
; Compilation aborted
; error: compiler found fatal error[s] "Setlayerdim-140819.lsp"
; Compilation aborted
; error: compiler found fatal error[s] "Setlayerdim-140819.lsp"
; Compilation aborted
; error: compiler found fatal error[s] "Setlayerdim-140819.lsp"
; Compilation aborted
; error: compiler found fatal error[s] "Setlayerdim-140819.lsp"

  • 0

#22 mrphuocvie

mrphuocvie

    biết vẽ ellipse

  • Members
  • PipPip
  • 50 Bài viết
Điểm đánh giá: -8 (bình thường)

Đã gửi 13 October 2014 - 04:03 PM


132006_question_20141013_04.jpg

 

(defun C:DTB()
	(if (not rea) (setq rea 100))
	(setq rea1 (getreal (strcat "\nInput distance of bulong <" (itoa rea) ">:"))) 
	(if rea1 (setq rea rea1))
	(while
		(if (setq net (nentsel "\nSelect  text of dimension!"))
			(setq
				etname (car net)
				etlist (entget etname)
				ettype (cdr (assoc 0 etlist))
				newtext (cdr (assoc 1 etlist))
			)
		)
		(if (= (substr newtext 1 4) "\\A1;")(setq newtext (vl-string-subst "" "\\A1;" newtext)))
		(if (= (substr newtext 1 4) "\\A1;")(setq newtext (vl-string-subst "" "\\A1;" newtext)))
		(if (= (substr newtext 1 4) "\\A1;")(setq newtext (vl-string-subst "" "\\A1;" newtext)))
		(if (= (substr newtext 1 4) "\\A1;")(setq newtext (vl-string-subst "" "\\A1;" newtext)))
		(if (= (substr newtext 1 4) "\\A1;")(setq newtext (vl-string-subst "" "\\A1;" newtext)))
		(if (= (substr newtext (-(strlen newtext) 3) 1) ",")(setq newtext (strcat (substr newtext 1 (-(strlen newtext) 4)) (substr newtext (-(strlen newtext) 2) (-(strlen newtext) 2)))))
		(setq bl (rtos(/ (atof newtext) rea)))
		(setq reat (rtos rea))
		(princ "\nSelect dimension to add text override!")
		(setq dim_obj (ssget(list(cons 0 "DIMENSION"))))
		(command ".Dim1" "New" (strcat "<>(" bl "x" reat ")") dim_obj "")
	)
	(princ)
)

 

(defun C:DTB()
(if (not rea) (setq rea 100))
(setq rea1 (getreal (strcat "\nInput distance of bulong <" (itoa rea) ">:"))) 
(if rea1 (setq rea rea1))
(while
(if (setq net (nentsel "\nSelect  text of dimension!"))
(setq
etname (car net)
etlist (entget etname)
ettype (cdr (assoc 0 etlist))
newtext (cdr (assoc 1 etlist))
)
)
(if (= (substr newtext 1 4) "\\A1;")(setq newtext (vl-string-subst "" "\\A1;" newtext)))
(if (= (substr newtext 1 4) "\\A1;")(setq newtext (vl-string-subst "" "\\A1;" newtext)))
(if (= (substr newtext 1 4) "\\A1;")(setq newtext (vl-string-subst "" "\\A1;" newtext)))
(if (= (substr newtext 1 4) "\\A1;")(setq newtext (vl-string-subst "" "\\A1;" newtext)))
(if (= (substr newtext 1 4) "\\A1;")(setq newtext (vl-string-subst "" "\\A1;" newtext)))
(if (= (substr newtext (-(strlen newtext) 3) 1) ",")(setq newtext (strcat (substr newtext 1 (-(strlen newtext) 4)) (substr newtext (-(strlen newtext) 2) (-(strlen newtext) 2)))))
(setq bl (rtos(/ (atof newtext) rea)))
(setq reat (rtos rea))
(princ "\nSelect dimension to add text override!")
(setq dim_obj (ssget(list(cons 0 "DIMENSION"))))
(command ".Dim1" "New" (strcat "<>(" bl "x" reat ")") dim_obj "")
)
(princ)
)

 

1. Cho em hỏi: lỗi này là thế nào?

Command: DTB
; error: bad argument type: fixnump: 21.0

và nhờ các anh chị sửa giúp!

2. tại sao có lỗi ra nhiều số 0 như thế! bây giờ muốn bỏ các số 0 không có nghĩa đi, ta sẽ sửa lại đoạn code thế nào ah!

 

Command: DTB
; error: bad argument type: fixnump: 21.0

  • -1

#23 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 14 October 2014 - 06:45 AM

Chào bạn!

1./ Vì (itoa 21.0) -> lỗi (Vì hàm itoa chuyển số nguyên thành chuỗi, trong khi đó bạn lại chuyển số thực thành chuỗi do đó phải sử dụng hàm rtos

 

2./ Bạn set biến hệ thống Dimzin bằng 8 vào đầu Lisp


  • 0

#24 mrphuocvie

mrphuocvie

    biết vẽ ellipse

  • Members
  • PipPip
  • 50 Bài viết
Điểm đánh giá: -8 (bình thường)

Đã gửi 14 October 2014 - 08:08 AM

Thanks Tue_NV!


  • 0

#25 mrphuocvie

mrphuocvie

    biết vẽ ellipse

  • Members
  • PipPip
  • 50 Bài viết
Điểm đánh giá: -8 (bình thường)

Đã gửi 28 November 2014 - 09:56 PM

(defun C:DBS()
	(if (not rea) (setq rea 200))
	(setq rea1 (getreal (strcat "\nInput distance of bulong <" (rtos rea) ">:"))) 
	(if rea1 (setq rea rea1))
	(if (not sln) (setq sln 2))
	(setq sln1 (getreal (strcat "\nNumber of bolts/row: <" (rtos sln) ">:"))) 
	(if sln1 (setq sln sln1))
	(if (not agnl) (setq agnl 0))
	(setq agnl1 (getreal (strcat "\nRotation of text: <" (rtos agnl) ">:"))) 
	(if agnl1 (setq agnl agnl1))
	(while
		(if (setq net (nentsel "\nSelect  text of dimension!"))
			(setq
				etname (car net)
				etlist (entget etname)
				ettype (cdr (assoc 0 etlist))
				newtext (cdr (assoc 1 etlist))
			)
		)
		(if (= (substr newtext 1 4) "\\A1;")(setq newtext (vl-string-subst "" "\\A1;" newtext)))
		(if (= (substr newtext 1 4) "\\A1;")(setq newtext (vl-string-subst "" "\\A1;" newtext)))
		(if (= (substr newtext 1 4) "\\A1;")(setq newtext (vl-string-subst "" "\\A1;" newtext)))
		(if (= (substr newtext 1 4) "\\A1;")(setq newtext (vl-string-subst "" "\\A1;" newtext)))
		(if (= (substr newtext 1 4) "\\A1;")(setq newtext (vl-string-subst "" "\\A1;" newtext)))
		(setq newtext (vl-string-subst "" "," newtext))
		(setq newtext (vl-string-subst "" "," newtext))
		(setq newtext (vl-string-subst "" "," newtext))
		(setq bl (rtos(/ (atof newtext) rea)))
		(setq bl1 (rtos(fix (+ (/ (atof newtext) rea) 1))))
		(setq reat (rtos rea))
		(setq sl (rtos sln))
		(setq pst (vl-string-position (ascii ".") bl))
		(setq bl (substr bl 1 (+ pst 2)))
		(setq newtextS (strcat newtext "÷@" reat "=" bl1 "本(" bl ")x" sl "列"))
		(setvar "CLAYER" "07寸法")
		(setvar "CECOLOR" "3")
		(setvar "TEXTSTYLE" "Standard")
		(command "text" "j" "MC" pause 125 agnl newtextS)
	)
	(princ)
)

Lỗi

Select  text of dimension!; error: bad argument type: numberp: nil

Nhờ mọi người giúp đỡ:

1. Lỗi đó có nghĩa là gì và cách khắc phục.

2. Có một số bản vẽ không áp dụng được.

3. Có hàm nào trong autolisp fix được số chữ số thập phân không, vì trong đoạn code này em đang làm theo cách thủ công và kết quả thì tòi quá.

Cảm ơn mọi người!


  • 0