Đến nội dung


Hình ảnh
- - - - -

Mã hóa các text trong bản vẽ


  • Please log in to reply
58 replies to this topic

#1 vbao

vbao

    biết lệnh array

  • CADViet Team
  • PipPipPip
  • 184 Bài viết
Điểm đánh giá: 80 (tàm tạm)

Đã gửi 25 May 2007 - 09:04 PM

Nhờ các anh trong diễn đàn hướng dẫn & giải quyết: có cách nào mã hóa (encrypt và decrypt) các text trong bản vẽ? (từ 1 chuỗi text ta có thể cắt rời từng ký tự sau đó thay thế và mã hóa các đối tượng này). Thanks :s_dead:
  • 0

#2 vndesperados

vndesperados

    biết lệnh xref

  • Members
  • PipPipPipPipPipPipPip
  • 547 Bài viết
Điểm đánh giá: 253 (khá)

Đã gửi 25 May 2007 - 09:48 PM

Nhờ các anh trong diễn đàn hướng dẫn & giải quyết: có cách nào mã hóa (encrypt và decrypt) các text trong bản vẽ? (từ 1 chuỗi text ta có thể cắt rời từng ký tự sau đó thay thế và mã hóa các đối tượng này). Thanks :s_dead:



Mục đích của việc mã hóa để làm gì? Bác có thể cho ví dụ mã hóa như thế nào không?
  • 0

#3 vbao

vbao

    biết lệnh array

  • CADViet Team
  • PipPipPip
  • 184 Bài viết
Điểm đánh giá: 80 (tàm tạm)

Đã gửi 26 May 2007 - 08:18 AM

Mục đích của việc mã hóa để làm gì? Bác có thể cho ví dụ mã hóa như thế nào không?


mục đích của tôi là bảo vệ bản vẽ (có những công trình giao file nhưng chủ đầu tư chưa giao tiền) tôi ví dụ: trong file bản vẽ có đối tượng text là abc, tôi muốn cắt chuỗi này và mã hóa ký tự a thành một ký tự khác trong bản mã acii theo một hằng số, giả sử tôi cho hằng số = 3, ký tự a sẽ là = d trong bản vẽ (a + 3 = d), tương tự cho b, c. . .) decrypt = ta sẽ hoàn nguyên
  • 0

#4 vndesperados

vndesperados

    biết lệnh xref

  • Members
  • PipPipPipPipPipPipPip
  • 547 Bài viết
Điểm đánh giá: 253 (khá)

Đã gửi 28 May 2007 - 01:40 PM

mục đích của tôi là bảo vệ bản vẽ (có những công trình giao file nhưng chủ đầu tư chưa giao tiền) tôi ví dụ: trong file bản vẽ có đối tượng text là abc, tôi muốn cắt chuỗi này và mã hóa ký tự a thành một ký tự khác trong bản mã acii theo một hằng số, giả sử tôi cho hằng số = 3, ký tự a sẽ là = d trong bản vẽ (a + 3 = d), tương tự cho b, c. . .) decrypt = ta sẽ hoàn nguyên


Đây là cách mã hóa đơn giản nhất được gọi là mã hóa CEASAR (Từ trước CN mà ông này giỏi thế, đã nghĩ ra rồi)
Bác GET về sau đó bổ sung thêm các hàm chọn TEXT, hàm lấy vị trí TEXT và hàm thay thế nhé
;Chuong ma hoa chuoi theo thuat toan Ceasar
(DEFUN ENCRYPT(str n / l str1 m)
(setq str1 "a")
(setq l (strlen str))
(setq i 1)
(while (<= i l)
(setq c (substr str i 1))
(setq m (ascii c))
(setq m (+ m n))
(setq m (MOD m 255))
(setq str1 (strcat str1 (chr (nth (- m 32) LiAlpha))))
(setq i (1+ i))
)
(setq str1 (substr str1 2))
str1
)
(DEFUN DECRYPT (str n / l str1 m)
(setq str1 "a")
(setq l (strlen str))
(setq i 1)
(while (<= i l)
(setq c (substr str i 1))
(setq m (ascii c))
(setq m (- m n))
(if (< m 0)
(setq m (+ m 255))
)
(setq str1 (strcat str1 (chr (nth (- m 32) LiAlpha))))
(setq i (1+ i))
)
(setq str1 (substr str1 2))
str1
)
(DEFUN SETALPHA( / Li)
(setq Li (List))
(setq i 32)
(while (<= i 255)
(setq Li (append Li (List i)))
(setq i (1+ i))
)
(setq LiAlpha Li)
)
(DEFUN MOD (m n / kq)
(while (> m n)
(setq m (- m n))
)
(setq kq m)
kq
)

  • 0

#5 Hai Van

Hai Van

    biết zoom

  • Members
  • Pip
  • 12 Bài viết
Điểm đánh giá: 1 (bình thường)

Đã gửi 28 May 2007 - 03:27 PM

Đây là cách mã hóa đơn giản nhất được gọi là mã hóa CEASAR (Từ trước CN mà ông này giỏi thế, đã nghĩ ra rồi)
Bác GET về sau đó bổ sung thêm các hàm chọn TEXT, hàm lấy vị trí TEXT và hàm thay thế nhé

Em GET rồi, dùng lệnh gì để chạy chương trình hả bác?
Phải bổ sung hàm chọn TEXT như thế nào?
  • 0

#6 vndesperados

vndesperados

    biết lệnh xref

  • Members
  • PipPipPipPipPipPipPip
  • 547 Bài viết
Điểm đánh giá: 253 (khá)

Đã gửi 29 May 2007 - 09:39 AM

Em GET rồi, dùng lệnh gì để chạy chương trình hả bác?
Phải bổ sung hàm chọn TEXT như thế nào?


Hàm GETTEXT có tính năng như sau:
Cho phép chọn nhóm đối tượng trên bản vẽ và lọc ra đối tượng là TEXT hoặc MTEXT
Các thuộc tính được lọc theo assoc như sau:

0 - Tên đối tượng
1 - Nội dung text (Nếu là MTEXT thì các hàng phân biệt bởi "\\")
7 - Style chữ
8 - Tên Layer
10 - Tọa độ điểm chèn
40 - Chiều cao chữ
50 - Góc quay text
51 - Độ nghiên của text
71 - Hướng dòng chữ (Không cần quan tâm lắm)
72 - Canh lề theo phương ngang
73 - Canh lề theo phương đứng

Ghi nhận lại các thông tin này để thay thế.

1. RE_ENCRYPT - Hàm thay thế có chức năng sau:
GETTEXT
ENCRYPT
REWRITE

2. RE_DECRYPT - Hàm thay thế có chức năng sau:
GETTEXT
DECRYPT
REWRITE

Mời các bác tiếp tục nhé. Chúc thành công
  • 0

#7 vbao

vbao

    biết lệnh array

  • CADViet Team
  • PipPipPip
  • 184 Bài viết
Điểm đánh giá: 80 (tàm tạm)

Đã gửi 29 May 2007 - 03:31 PM

Hàm GETTEXT có tính năng như sau:
Cho phép chọn nhóm đối tượng trên bản vẽ và lọc ra đối tượng là TEXT hoặc MTEXT
Các thuộc tính được lọc theo assoc như sau:

0 - Tên đối tượng
1 - Nội dung text (Nếu là MTEXT thì các hàng phân biệt bởi "\\")
7 - Style chữ
8 - Tên Layer
10 - Tọa độ điểm chèn
40 - Chiều cao chữ
50 - Góc quay text
51 - Độ nghiên của text
71 - Hướng dòng chữ (Không cần quan tâm lắm)
72 - Canh lề theo phương ngang
73 - Canh lề theo phương đứng

Ghi nhận lại các thông tin này để thay thế.

1. RE_ENCRYPT - Hàm thay thế có chức năng sau:
GETTEXT
ENCRYPT
REWRITE

2. RE_DECRYPT - Hàm thay thế có chức năng sau:
GETTEXT
DECRYPT
REWRITE

Mời các bác tiếp tục nhé. Chúc thành công


bạn vndesperados ơi tôi không rành về autolisp . . . !!!
  • 0

#8 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 29 May 2007 - 10:21 PM

Cái của vndesperados lý thuyết cao quá, lại không có lệnh của ACAD nên người dùng không sử dụng được.

Sau đây là một đoạn mã lisp rất đơn giản để thực hiện theo yêu cầu của vbao (dịch 3 ký tự).
Dùng lệnh ENTXT để mã hóa. DETXT để giải mã (hoặc ngược lại, miễn là theo cặp).
Mật mã nằm tại hai dòng đầu tiên, có thể xáo trộn, thêm mã ascii khác nhưng cần đảm bảo 1 nguyên tắc: dòng trên có chữ gì thì dòng dưới có chữ đó, mỗi chữ xuất hiện 1 lần.

(setq txtsrc "123456789abcdefghijklmnopqrstuvxyz "
txtdes "456789abcdefghijklmnopqrstuvxyz 123"
)
(vl-load-com)
(defun transl (ent / tt old new gt)
(setq tt (entget ent)
old (assoc 1 tt)
gt (cdr old)
new (cons 1 (vl-string-translate src des gt))
)
(entmod (subst new old tt))
(entupd ent)
)
(defun c:ENTXT ()
(setq ss (ssget '((0 . "TEXT")))
src txtsrc
des txtdes
)
(princ (strcat "\nSo doi tuong duoc sua: " (itoa (sudung transl ss))))
(princ)
)
(defun c:DETXT ()
(setq ss (ssget '((0 . "TEXT")))
src txtdes
des txtsrc
)
(princ (strcat "\nSo doi tuong duoc sua: " (itoa (sudung transl ss))))
(princ)
)

(defun sudung (ham ss / sodt index entdt soapp)
(setq sodt (cond
(ss (sslength ss))
(t 0)
)
soapp 0
index 0
)
(repeat sodt
(setq entdt (ssname ss index)
index (1+ index)
)
(if (ham entdt)
(setq soapp (1+ soapp))
)
)
soapp
)

  • 0

#9 vndesperados

vndesperados

    biết lệnh xref

  • Members
  • PipPipPipPipPipPipPip
  • 547 Bài viết
Điểm đánh giá: 253 (khá)

Đã gửi 29 May 2007 - 11:01 PM

Cái của vndesperados lý thuyết cao quá, lại không có lệnh của ACAD nên người dùng không sử dụng được.

Sau đây là một đoạn mã lisp rất đơn giản để thực hiện theo yêu cầu của vbao (dịch 3 ký tự).
Dùng lệnh ENTXT để mã hóa. DETXT để giải mã (hoặc ngược lại, miễn là theo cặp).
Mật mã nằm tại hai dòng đầu tiên, có thể xáo trộn, thêm mã ascii khác nhưng cần đảm bảo 1 nguyên tắc: dòng trên có chữ gì thì dòng dưới có chữ đó, mỗi chữ xuất hiện 1 lần.

(setq txtsrc "123456789abcdefghijklmnopqrstuvxyz "
txtdes "456789abcdefghijklmnopqrstuvxyz 123"
)
(vl-load-com)
(defun transl (ent / tt old new gt)
(setq tt (entget ent)
old (assoc 1 tt)
gt (cdr old)
new (cons 1 (vl-string-translate src des gt))
)
(entmod (subst new old tt))
(entupd ent)
)
(defun c:ENTXT ()
(setq ss (ssget '((0 . "TEXT")))
src txtsrc
des txtdes
)
(princ (strcat "\nSo doi tuong duoc sua: " (itoa (sudung transl ss))))
(princ)
)
(defun c:DETXT ()
(setq ss (ssget '((0 . "TEXT")))
src txtdes
des txtsrc
)
(princ (strcat "\nSo doi tuong duoc sua: " (itoa (sudung transl ss))))
(princ)
)

(defun sudung (ham ss / sodt index entdt soapp)
(setq sodt (cond
(ss (sslength ss))
(t 0)
)
soapp 0
index 0
)
(repeat sodt
(setq entdt (ssname ss index)
index (1+ index)
)
(if (ham entdt)
(setq soapp (1+ soapp))
)
)
soapp
)


Xin lỗi bác Hoành nhé. Công nhận bác coding nhanh thật và khả năng sử dụng lệnh của LISP cũng như VisualLISP của bác thì mình bái phục. Mình hầu như chẳng thuộc lệnh của LISP đâu. Coding đến đâu thì mở HELP ra xem thôi. Nhưng mà tư duy của bác thì amateur hay là bác giấu nghề- Xin lỗi bác đừng giận.
Bác có thử chạy code của bác trên chữ hoa hay trên các ký hiệu chưa? và nếu người ta cần mã hóa mà bác dùng dịch chuyển là hằng số như thế thì coi bộ không ổn lắm, tất nhiên cái mã hóa mà bác Vbao yêu cầu cũng chỉ là amateur, nếu bác Vbao cần PRO thì mình cũng có thể code cho một đọan dùng mã công khai hoặc mã đối xứng. (Hehe, nghề của mình là Java Network Security mà)
Nhưng mà dù sao cũng cảm ơn bác, nhờ cái đọan code của bác mà mình học thêm được vài lệnh LISP.
@Vbao: Hôm nay bận quá. Để mai mình coding chương trình hòan chỉnh rồi gửi bác
  • 0

#10 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 29 May 2007 - 11:13 PM

Mật mã nằm tại hai dòng đầu tiên, có thể xáo trộn, thêm mã ascii khác nhưng cần đảm bảo 1 nguyên tắc: dòng trên có chữ gì thì dòng dưới có chữ đó, mỗi chữ xuất hiện 1 lần.


Chẳng có gì giấu cả, mình quan niệm đã là Lisp là amatơ. Mã mở, hướng dẫn người sử dụng tỉ mỷ, khi người sử dụng gặp chữ hoa tự khắc biết cách sửa. Mình không nghĩ họ không ngốc đến mức để nguyên chữ hoa.

Hãy giản dị như cuộc sống nó vẫn thế!
  • 0

#11 vndesperados

vndesperados

    biết lệnh xref

  • Members
  • PipPipPipPipPipPipPip
  • 547 Bài viết
Điểm đánh giá: 253 (khá)

Đã gửi 29 May 2007 - 11:42 PM

Chẳng có gì giấu cả, mình quan niệm đã là Lisp là amatơ. Mã mở, hướng dẫn người sử dụng tỉ mỷ, khi người sử dụng gặp chữ hoa tự khắc biết cách sửa. Mình không nghĩ họ không ngốc đến mức để nguyên chữ hoa.

Hãy giản dị như cuộc sống nó vẫn thế!



Bác Hoành này, trong bảng mã ASCII có 256 ký tự, trừ 32 ký tự đầu tiên có mã là 0..31 không hiển thị được còn 224 ký tự còn lại đều có khả năng xuất hiện trên bản vẽ. Nếu theo cách của bác thì nên khai đủ 224 ký tự đó và mỗi lần thay khóa để mã hóa thì bác phải viết lại hai dòng destxt va srctxt à?

@Vbao: Bác thử load code mình viết vào và thử tai dòng lệnh COMMAND của AutoCad nhé
(setq aa (ENCRYPT "Vo Kien Cuong - FITC" n))

(setq bb (DECRYPT aa n))
xem thử nó ra cái gì nhé...
Với n < 255 bất kỳ...
  • 0

#12 vndesperados

vndesperados

    biết lệnh xref

  • Members
  • PipPipPipPipPipPipPip
  • 547 Bài viết
Điểm đánh giá: 253 (khá)

Đã gửi 30 May 2007 - 03:19 PM

Đây rồi. các bác GET về và dung với các lệnh:
ENC = mã hóa
DEC = giải mã

;Chuong ma hoa chuoi theo thuat toan Ceasar
(DEFUN ENCRYPT(str n / i l str1 m)
(setq str1 "a")
(setq l (strlen str))
(setq i 1)
(while (<= i l)
(setq c (substr str i 1))
(setq m (ascii c))
(setq m (+ m n))
(setq m (MOD m 255))
(setq str1 (strcat str1 (chr (nth (- m 32) LiAlpha))))
(setq i (1+ i))
)
(setq str1 (substr str1 2))
str1
)
(DEFUN DECRYPT (str n / i l str1 m)
(setq str1 "a")
(setq l (strlen str))
(setq i 1)
(while (<= i l)
(setq c (substr str i 1))
(setq m (ascii c))
(setq m (- m n))
(if (< m 0)
(setq m (+ m 255))
)
(setq str1 (strcat str1 (chr (nth (- m 32) LiAlpha))))
(setq i (1+ i))
)
(setq str1 (substr str1 2))
str1
)
(DEFUN SETALPHA( / Li)
(setq Li (List))
(setq i 32)
(while (<= i 255)
(setq Li (append Li (List i)))
(setq i (1+ i))
)
(setq LiAlpha Li)
)
(DEFUN MOD (m n / kq)
(while (> m n)
(setq m (- m n))
)
(setq kq m)
kq
)
(DEFUN C:ENC (/ ss str str0)
(SETALPHA)
(setvar "CMDECHO" 0)
(princ "\nChon doi tuong can ma hoa:")
(setq ss (ssget '((-4 . ""))))
(setq m (getint "Cho biet ma khoa: "))
(setq i 0)
(setq dt (ssname ss 0))
(setq n (sslength ss))
(setq i 0)
(while (< i n)
(setq dt (ssname ss i))
(setq str (GETCONTENT dt))
(setq str0 str)
(if (= (TENDOITUONG dt) "TEXT")
(setq str (ENCRYPT str m))
(setq str (ENC_MTEXT str m))
)
(setq obj (entget dt))
(setq obj (subst (cons 1 str) (cons 1 str0) obj))
(entmod obj)
(entupd dt)
(setq i (1+ i))
)
(setvar "CMDECHO" 0)
(princ)
)
(DEFUN C:DEC (/ ss str str0)
(SETALPHA)
(setvar "CMDECHO" 0)
(princ "\nChon doi tuong can giai ma:")
(setq ss (ssget '((-4 . ""))))
(setq m (getint "Cho biet ma khoa: "))
(setq i 0)
(setq dt (ssname ss 0))
(setq n (sslength ss))
(setq i 0)
(while (< i n)
(setq dt (ssname ss i))
(setq str (GETCONTENT dt))
(setq str0 str)
(if (= (TENDOITUONG dt) "TEXT")
(setq str (DECRYPT str m))
(setq str (DEC_MTEXT str m))
)
(setq obj (entget dt))
(setq obj (subst (cons 1 str) (cons 1 str0) obj))
(entmod obj)
(entupd dt)
(setq i (1+ i))
)
(setvar "CMDECHO" 0)
(princ)
)

(DEFUN ENC_MTEXT(str m / LiStr i encstr n)
(setq LiStr (List))
(setq encstr "a")
(setq i (POSTSTR str "\\P"))
(if (= i 0)
(setq LiStr (Append LiStr (List str)))
(progn
(while (> i 0)
(setq temp (substr str 1 (1- i)))
(setq LiStr (Append LiStr (List temp)))
(setq str (substr str (+ i 2)))
(setq i (POSTSTR str "\\P"))
)
(setq LiStr (Append LiStr (List str)))
)
)
(setq n (length LiStr))
(setq i 0)
(while(< i n)
(setq encstr (strcat encstr "\\P" (ENCRYPT (nth i LiStr) m)))
(setq i (+ i 1))
)
(setq encstr (substr encstr 4))
encstr
)
(DEFUN DEC_MTEXT(str m / LiStr i decstr n)
(setq LiStr (List))
(setq decstr "a")
(setq i (POSTSTR str "\\P"))
(if (= i 0)
(setq LiStr (Append LiStr (List str)))
(progn
(while (> i 0)
(setq temp (substr str 1 (1- i)))
(setq LiStr (Append LiStr (List temp)))
(setq str (substr str (+ i 2)))
(setq i (POSTSTR str "\\P"))
)
(setq LiStr (Append LiStr (List str)))
)
)
(setq n (length LiStr))
(setq i 0)
(while(< i n)
(setq decstr (strcat decstr "\\P" (DECRYPT (nth i LiStr) m)))
(setq i (+ i 1))
)
(setq decstr (substr decstr 4))
decstr
)
(DEFUN GETCONTENT (obj / cont)
(setq cont (cdr (assoc 1 (entget obj))))
cont
)
(DEFUN POSTSTR(str0 str / vt i l0 l)
(setq vt 0)
(setq l0 (strlen str0))
(setq l (strlen str))
(setq i 1)
(while (< i (- l0 l -1))
(if (= (substr str0 i l) str)
(progn
(setq vt i)
(setq i l0)
)
)
(setq i (1+ i))
)
vt
)
(DEFUN TENDOITUONG (obj / name)
(setq name (CDR (ASSOC 0 (ENTGET obj))))
name
)

  • 0

#13 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 30 May 2007 - 04:03 PM

Đây rồi. các bác GET về và dung với các lệnh:
ENC = mã hóa
DEC = giải mã

;Chuong ma hoa chuoi theo thuat toan Ceasar
(DEFUN ENCRYPT(str n / i l str1 m)
(setq str1 "a")
(setq l (strlen str))
(setq i 1)
(while (<= i l)
(setq c (substr str i 1))
(setq m (ascii c))
(setq m (+ m n))
(setq m (MOD m 255))
(setq str1 (strcat str1 (chr (nth (- m 32) LiAlpha))))
(setq i (1+ i))
)
(setq str1 (substr str1 2))
str1
)
(DEFUN DECRYPT (str n / i l str1 m)
(setq str1 "a")
(setq l (strlen str))
(setq i 1)
(while (<= i l)
(setq c (substr str i 1))
(setq m (ascii c))
(setq m (- m n))
(if (< m 0)
(setq m (+ m 255))
)
(setq str1 (strcat str1 (chr (nth (- m 32) LiAlpha))))
(setq i (1+ i))
)
(setq str1 (substr str1 2))
str1
)
(DEFUN SETALPHA( / Li)
(setq Li (List))
(setq i 32)
(while (<= i 255)
(setq Li (append Li (List i)))
(setq i (1+ i))
)
(setq LiAlpha Li)
)
(DEFUN MOD (m n / kq)
(while (> m n)
(setq m (- m n))
)
(setq kq m)
kq
)
(DEFUN C:ENC (/ ss str str0)
(SETALPHA)
(setvar "CMDECHO" 0)
(princ "\nChon doi tuong can ma hoa:")
(setq ss (ssget '((-4 . ""))))
(setq m (getint "Cho biet ma khoa: "))
(setq i 0)
(setq dt (ssname ss 0))
(setq n (sslength ss))
(setq i 0)
(while (< i n)
(setq dt (ssname ss i))
(setq str (GETCONTENT dt))
(setq str0 str)
(if (= (TENDOITUONG dt) "TEXT")
(setq str (ENCRYPT str m))
(setq str (ENC_MTEXT str m))
)
(setq obj (entget dt))
(setq obj (subst (cons 1 str) (cons 1 str0) obj))
(entmod obj)
(entupd dt)
(setq i (1+ i))
)
(setvar "CMDECHO" 0)
(princ)
)
(DEFUN C:DEC (/ ss str str0)
(SETALPHA)
(setvar "CMDECHO" 0)
(princ "\nChon doi tuong can giai ma:")
(setq ss (ssget '((-4 . ""))))
(setq m (getint "Cho biet ma khoa: "))
(setq i 0)
(setq dt (ssname ss 0))
(setq n (sslength ss))
(setq i 0)
(while (< i n)
(setq dt (ssname ss i))
(setq str (GETCONTENT dt))
(setq str0 str)
(if (= (TENDOITUONG dt) "TEXT")
(setq str (DECRYPT str m))
(setq str (DEC_MTEXT str m))
)
(setq obj (entget dt))
(setq obj (subst (cons 1 str) (cons 1 str0) obj))
(entmod obj)
(entupd dt)
(setq i (1+ i))
)
(setvar "CMDECHO" 0)
(princ)
)

(DEFUN ENC_MTEXT(str m / LiStr i encstr n)
(setq LiStr (List))
(setq encstr "a")
(setq i (POSTSTR str "\\P"))
(if (= i 0)
(setq LiStr (Append LiStr (List str)))
(progn
(while (> i 0)
(setq temp (substr str 1 (1- i)))
(setq LiStr (Append LiStr (List temp)))
(setq str (substr str (+ i 2)))
(setq i (POSTSTR str "\\P"))
)
(setq LiStr (Append LiStr (List str)))
)
)
(setq n (length LiStr))
(setq i 0)
(while(< i n)
(setq encstr (strcat encstr "\\P" (ENCRYPT (nth i LiStr) m)))
(setq i (+ i 1))
)
(setq encstr (substr encstr 4))
encstr
)
(DEFUN DEC_MTEXT(str m / LiStr i decstr n)
(setq LiStr (List))
(setq decstr "a")
(setq i (POSTSTR str "\\P"))
(if (= i 0)
(setq LiStr (Append LiStr (List str)))
(progn
(while (> i 0)
(setq temp (substr str 1 (1- i)))
(setq LiStr (Append LiStr (List temp)))
(setq str (substr str (+ i 2)))
(setq i (POSTSTR str "\\P"))
)
(setq LiStr (Append LiStr (List str)))
)
)
(setq n (length LiStr))
(setq i 0)
(while(< i n)
(setq decstr (strcat decstr "\\P" (DECRYPT (nth i LiStr) m)))
(setq i (+ i 1))
)
(setq decstr (substr decstr 4))
decstr
)
(DEFUN GETCONTENT (obj / cont)
(setq cont (cdr (assoc 1 (entget obj))))
cont
)
(DEFUN POSTSTR(str0 str / vt i l0 l)
(setq vt 0)
(setq l0 (strlen str0))
(setq l (strlen str))
(setq i 1)
(while (< i (- l0 l -1))
(if (= (substr str0 i l) str)
(progn
(setq vt i)
(setq i l0)
)
)
(setq i (1+ i))
)
vt
)
(DEFUN TENDOITUONG (obj / name)
(setq name (CDR (ASSOC 0 (ENTGET obj))))
name
)


"Chuyên gia phần mềm chuyên nghiệp" xem lại cho tại sao khi encrypt một số đối tượng thì bị báo lỗi:
; error: bad argument value: non-negative: -31
số -31 chỉ là ví dụ, mỗi mã khóa bị một số khác nhau.

Ví dụ khi dòng text có giá trị {error} thì sử dụng lệnh ENC với mã khóa từ 131-185 đều báo lỗi.
không biết chuyên gia chuyên nghiệp giải thích thế nào với khác hàng, hay là do phần mềm trên free nên còn nhiều lỗi?
  • 0

#14 vndesperados

vndesperados

    biết lệnh xref

  • Members
  • PipPipPipPipPipPipPip
  • 547 Bài viết
Điểm đánh giá: 253 (khá)

Đã gửi 30 May 2007 - 05:35 PM

(DEFUN ENCRYPT(str n / i l str1 m)
(setq str1 "a")
(setq l (strlen str))
(setq i 1)
(while (<= i l)
(setq c (substr str i 1))
(setq m (- (ascii c) 32))
(setq m (+ m n))
(while (< m 0)
(setq m (+ m 224))
)
(setq m (MOD m 224))
(setq str1 (strcat str1 (chr (nth m LiAlpha))))
(setq i (1+ i))
)
(setq str1 (substr str1 2))
str1
)
(DEFUN DECRYPT (str n / i l str1 m)
(setq str1 "a")
(setq l (strlen str))
(setq i 1)
(while (<= i l)
(setq c (substr str i 1))
(setq m (- (ascii c) 32))
(setq m (- m n))
(while (< m 0)
(setq m (+ m 224))
)
(setq m (MOD m 224))
(setq str1 (strcat str1 (chr (nth m LiAlpha))))
(setq i (1+ i))
)
(setq str1 (substr str1 2))
str1
)

(DEFUN MOD (m n / kq)
(while (>= m n)
(setq m (- m n))
)
(setq kq m)
kq
)

Các bác thay thế 3 defun này vào đọan code trước.
Bấy giờ thì mã hóa với số nguyên bất kỳ. (âm dương đều được)

Các bác thông cảm, máy ở công ty không cài ACAD nên không test được...
Thôi mình phải làm việc đây
Dù sao cũng cảm ơn bác Hòanh đã test giúp, heheheheh.
  • 1

#15 vbao

vbao

    biết lệnh array

  • CADViet Team
  • PipPipPip
  • 184 Bài viết
Điểm đánh giá: 80 (tàm tạm)

Đã gửi 30 May 2007 - 07:36 PM

(DEFUN ENCRYPT(str n / i l str1 m)
(setq str1 "a")
(setq l (strlen str))
(setq i 1)
(while (<= i l)
(setq c (substr str i 1))
(setq m (- (ascii c) 32))
(setq m (+ m n))
(while (< m 0)
(setq m (+ m 224))
)
(setq m (MOD m 224))
(setq str1 (strcat str1 (chr (nth m LiAlpha))))
(setq i (1+ i))
)
(setq str1 (substr str1 2))
str1
)
(DEFUN DECRYPT (str n / i l str1 m)
(setq str1 "a")
(setq l (strlen str))
(setq i 1)
(while (<= i l)
(setq c (substr str i 1))
(setq m (- (ascii c) 32))
(setq m (- m n))
(while (< m 0)
(setq m (+ m 224))
)
(setq m (MOD m 224))
(setq str1 (strcat str1 (chr (nth m LiAlpha))))
(setq i (1+ i))
)
(setq str1 (substr str1 2))
str1
)

(DEFUN MOD (m n / kq)
(while (>= m n)
(setq m (- m n))
)
(setq kq m)
kq
)

Các bác thay thế 3 defun này vào đọan code trước.
Bấy giờ thì mã hóa với số nguyên bất kỳ. (âm dương đều được)

Các bác thông cảm, máy ở công ty không cài ACAD nên không test được...
Thôi mình phải làm việc đây
Dù sao cũng cảm ơn bác Hòanh đã test giúp, heheheheh.


Cảm ơn các bạn rất nhiều :s_dead:
  • 0

#16 kts.ngocquan

kts.ngocquan

    biết vẽ ellipse

  • Members
  • PipPip
  • 59 Bài viết
Điểm đánh giá: 36 (tàm tạm)

Đã gửi 09 June 2007 - 04:16 PM

Lâu rồi mới có dịp nói chuyện cùng anh em CAD VIET
Cho tôi hỏi 1 vấn đề nhé , tôi ko biết những cái mà các đồng chí nói ở trên (Vì tôi ko là dân lập trình như các đồng chí)
Xin hỏi : có đoạn lisp nào khi dùng thì không sửa đc bản vẽ nữa ko Chỉ để in thôi ý Cái này tôi thấy cần thiết lắm
  • 0

#17 kts.ngocquan

kts.ngocquan

    biết vẽ ellipse

  • Members
  • PipPip
  • 59 Bài viết
Điểm đánh giá: 36 (tàm tạm)

Đã gửi 09 June 2007 - 04:25 PM

Vấn đề thứ 2 muốn nhờ các đồng chí là : làm thế nào để gửi bản vẽ (bằng email) đến cho người khác (vẫn là email) mà chỉ cần đánh địa chỉ email đến , còn mail của mình dùng để gửi chỉ cần nhập 01 lần + cá password
  • 0

#18 vndesperados

vndesperados

    biết lệnh xref

  • Members
  • PipPipPipPipPipPipPip
  • 547 Bài viết
Điểm đánh giá: 253 (khá)

Đã gửi 09 June 2007 - 05:31 PM

Lâu rồi mới có dịp nói chuyện cùng anh em CAD VIET
Cho tôi hỏi 1 vấn đề nhé , tôi ko biết những cái mà các đồng chí nói ở trên (Vì tôi ko là dân lập trình như các đồng chí)
Xin hỏi : có đoạn lisp nào khi dùng thì không sửa đc bản vẽ nữa ko Chỉ để in thôi ý Cái này tôi thấy cần thiết lắm


Dùng PDF Creator, cái này chuyển bản vẽ thành PDF, cho phép xem thôi, khỏi sửa.
Còn cách nữa, Nếu biết dùng ObjectARX cũng có thể tạo ra những đối tượng không sửa được bằng cách thông thường.
  • 0

#19 vndesperados

vndesperados

    biết lệnh xref

  • Members
  • PipPipPipPipPipPipPip
  • 547 Bài viết
Điểm đánh giá: 253 (khá)

Đã gửi 09 June 2007 - 06:26 PM

Vấn đề thứ 2 muốn nhờ các đồng chí là : làm thế nào để gửi bản vẽ (bằng email) đến cho người khác (vẫn là email) mà chỉ cần đánh địa chỉ email đến , còn mail của mình dùng để gửi chỉ cần nhập 01 lần + cá password


1. Cố gắng tìm một địa chỉ email hỗ trợ POP3 (hotmail, vnnmai), dùng với Outlook Express hoặc Microsof Outlook.
2. Các địa chỉ Web mail hoặc Internet mail thì mở ra sau đó dùng Bookmark để đánh dấu lại.
  • 0

#20 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 14 June 2007 - 02:46 PM

Dùng PDF Creator, cái này chuyển bản vẽ thành PDF, cho phép xem thôi, khỏi sửa.
Còn cách nữa, Nếu biết dùng ObjectARX cũng có thể tạo ra những đối tượng không sửa được bằng cách thông thường.


Vấn đề giao bản vẽ không cho chinh sửa trên diển đàn này có khá nhiều bài viết rồi nhưng chưa có giải pháp nào ngon lành cả:
-Chuyển sang PFD thì khôngdược vì phải giao file *.DWG.
-Nổ tàon bộ bản vẽ thì thủ công và nói chung không giải quyết vấn đề tận gốc được.
-Dùng chương trình LOCKDWG thì thấy nói dính vấn đề bản quyền. và thấy anh em phản hồi là có khi dùng không được.
Thấy bác nói cái ObjectARX gì đó nếu đơn giản nác có thể làm một bài hướng dẩn được không. Mình nghỉ cái này nhiều người quan tâm chứ không riêng mình mình. Cám ơn !!!!!
  • 1

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D